为什么我的电子邮件方法始终将电子邮件本身作为附件发送?

时间:2017-08-31 18:37:59

标签: java spring-boot javamail email-attachments

尝试使用带有正文的excel附件发送电子邮件。 无论出于何种原因,我收到的电子邮件总是一封电子邮件,上面有我想要作为附件发送的电子邮件,然后excel本身附在附加的电子邮件中......

是否有一些属性可以禁用此行为?

public void sendEmailWithAttachment(EmailProperties properties) {
    MimeMessage message = javaMailSender.createMimeMessage();

    try {
        message.setFrom(properties.getFrom());
        message.setHeader("X-Mailer", properties.getHeader());

        if (properties.getPriority() != null) {
            message.setHeader("X-Priority", properties.getPriority().getValue());
        }

        InternetAddress[] toEmailArray = properties.getToAddresses().toArray(new InternetAddress[properties.getToAddresses().size()]);

        message.setRecipients(javax.mail.Message.RecipientType.TO, toEmailArray);
        message.setSubject(properties.getSubject());
        message.setSentDate(new Date());

        Multipart multipart = new MimeMultipart();
        if (StringUtils.isNotBlank(properties.getMessageText())) {
            MimeBodyPart mimeBodyPart = new MimeBodyPart();
            mimeBodyPart.setText(properties.getMessageText());
            multipart.addBodyPart(mimeBodyPart);
        }

        MimeBodyPart mimeBodyPart = new MimeBodyPart();
        mimeBodyPart.setDataHandler(new DataHandler(new ByteArrayDataSource(properties.getContents(), properties.getContentType())));
        mimeBodyPart.setFileName(properties.getFileName());
        multipart.addBodyPart(mimeBodyPart);

        message.setContent(multipart);

        send(message);
    } catch (Exception exc) {
        logger.error("Error attempting to send email!", exc);
    }
}

1 个答案:

答案 0 :(得分:0)

我已经弄明白,如果电子邮件中没有正文,则发送的电子邮件会将电子邮件作为附件发送。一旦有正文,电子邮件看起来正常,它显示正文,然后excel作为附件......为什么......