0

我正在尝试使用 JavaMail API 发送附件,但它似乎不起作用。你能告诉我我犯的错误吗,文件 ABC.pdf 在项目的同一个文件中。我确实在第一个 sysout 中的“s”中得到了正确的路径。该程序永远不会到达第二个系统输出。我在电子邮件 ID 中将 ID 替换为“试用”。请帮忙

Message message = new MimeMessage(session);
        message.setSubject("Trial Messages");
        message.setFrom(new InternetAddress("trial@gmail.com"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("trial@yahoo.co.in"));

        MimeBodyPart body = new MimeBodyPart();
        body.setText(content);;
        Multipart part = new MimeMultipart();

        part.addBodyPart(body);

        File f = new File("ABC.pdf");
        String s = f.getAbsolutePath();

        System.out.printf(s);

        DataSource source = new FileDataSource(s);
        body.setDataHandler(new DataHandler(source));
        body.setFileName("ABC Bill");
        part.addBodyPart(body);

        System.out.printf(s);
        Transport.send(message);

        System.out.printf(s);
4

1 回答 1

1

尝试更换

body.setFileName("ABC Bill");

body.setFileName(source.getName());

您可以在此处尝试将 source.getName() 传递给 sysout 以查看是否一切正确(正确的文件名)添加也

// 将 Multipart 添加到消息中

message.setContent(part);

删除part.addBodyPart(body);,因为您添加了两次

Message message = new MimeMessage(session);
        message.setSubject("Trial Messages");
        message.setFrom(new InternetAddress("trial@gmail.com"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("trial@yahoo.co.in"));

        MimeBodyPart body = new MimeBodyPart();
        body.setText(content);;
        Multipart part = new MimeMultipart();


        File f = new File("ABC.pdf");
        String s = f.getAbsolutePath();

        System.out.printf(s);

        DataSource source = new FileDataSource(s);
        body.setDataHandler(new DataHandler(source));
        body.setFileName("ABC Bill");
        part.addBodyPart(body);

        message.setContent(part);
        System.out.printf(s);
        Transport.send(message);

        System.out.printf(s);
于 2013-02-09T09:15:41.970 回答