【问题标题】:Sending emails with attachments - empty multipart发送带附件的电子邮件 - 空多部分
【发布时间】:2015-11-25 05:35:41
【问题描述】:

我卡住了,无法弄清楚发送带有附件的电子邮件的问题。

没有附件一切正常。当我尝试添加附件时出现异常:

Failed messages: javax.mail.MessagingException: IOException while sending message;nested exception is:
java.io.IOException: javax.mail.MessagingException: Empty multipart: multipart/related; 
boundary="----=_Part_1_733213598.1441009036818"

这是我的属性文件:

reports.mailSender.clientEmail=zyx@gmail.com 
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=xyz@gmail.com
spring.mail.password=****
spring.mail.properties.mail.mime.multipart.allowempty=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.ssl.trust=smtp.gmail.com

和使用它的类:

@Component
public class MailSenderService {

    @Autowired
    JavaMailSender javaMailSender;

    @Value("${reports.mailSender.clientEmail}")
    private String clientEmail;

    public void sendMessage() {

        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        FileSystemResource file = new FileSystemResource(new File("c:\\simple.jpg"));
        try {
            mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(clientEmail));
            mimeMessage.setFrom("xyz@gmail.com");
            mimeMessage.setText(
                    "Hi");
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.addAttachment(file.getFilename(), file);
        } catch (MessagingException e) {
            e.printStackTrace();
        }

        try {
            this.javaMailSender.send(mimeMessage);
        } catch (MailException ex) {
            // simply log it and go on...
            System.err.println(ex.getMessage());
        }
    }
}

猜测 MimeMessageHelper 有问题,但无法单独解决。任何人都可以尝试帮助我吗?

【问题讨论】:

  • 尝试使用helper.setText()而不是mimeMessage.setText()

标签: java email spring-boot


【解决方案1】:

错误是因为你造成的

尝试发送带有空正文部分的邮件。

@Jen 在他的评论中是正确的,您设置的邮件文本不正确。

您的代码有错误,如下更改并尝试:-

MimeMessage mimeMessage = javaMailSender.createMimeMessage();
FileSystemResource file = new FileSystemResource(new File("c:\\simple.jpg"));
try {
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.addRecipient(Message.RecipientType.TO, new InternetAddress(clientEmail));
    helper.setFrom("xyz@gmail.com");
    helper.setText("Hi");
    helper.addAttachment(file.getFilename(), file);
} catch (MessagingException e) {
    e.printStackTrace();
}

try {
    this.javaMailSender.send(mimeMessage);
} catch (MailException ex) {
    // simply log it and go on...
    System.err.println(ex.getMessage());
}

【讨论】:

  • 感谢您的帮助,异常不再有问题-您能向我解释为什么我向上移动 MimeMessageHelper 时没有异常吗?另一个问题是接收电子邮件时没有附件 - 不知道为什么。编辑:现在一切都很好-谢谢你们帮助我-非常感谢:)
  • 这与移动 MimeMessageHelper 无关,问题是您将内容设置在错误的位置。您应该在 helper 中而不是在 mimeMessage 中设置内容。
  • 检查文件是否存在于指定位置。
  • 我怎样才能尊重你和 Jens 的答案?
猜你喜欢
  • 2020-06-30
  • 2015-08-28
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 2014-04-23
  • 2019-03-09
  • 2015-09-09
相关资源
最近更新 更多