java - 发送带有附件的电子邮件 - 空多部分

标签 java email spring-boot

我陷入困境,无法解决发送带有附件的电子邮件的问题。

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

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有问题,但无法单独解决。有人可以尝试帮助我吗?

最佳答案

导致该错误的原因是您:

trying to send the mail with empty body Parts.

@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());
}

关于java - 发送带有附件的电子邮件 - 空多部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306928/

相关文章:

java - 无法添加 sip 授权 header

Java TCP 客户端重复连接导致 EMFILE 错误

java - Firebase 云消息通知仅在我打开 "notification tab"时显示

html - 用于隐藏和显示图像和文本的电子邮件模板

spring - Spring boot loader 的组和 Artifact ID 是什么?

java - 标准 Java EE 目录结构与标准 Java EE 目录结构Intellij目录结构

Django 电子邮件后端(不断从错误的 "sender"发送电子邮件)

email - 用于通过电子邮件发送事件电子表格的 Google Apps 脚本

java - CORS 允许来源限制不会导致服务器拒绝请求

java - Spring Boot 可以将本地配置文件与同名的捆绑配置文件合并吗?