2017-08-31 38 views
3

尝试用某些正文文本发送带有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); 
    } 
} 
+0

您是否尝试仅发送附件或文本以检查消息的存在方式发送?此外,为了使代码更易于阅读,请尝试重命名正文部分变量(例如:textBodyPart和fileBodyPart)。它有助于更​​好地理解代码。 –

回答

0

我已经想通了,如果电子邮件中没有正文文本,发送的电子邮件中有电子邮件作为附件。一旦有正文文本,电子邮件看起来正常,它显示正文文本,然后excel作为附件...只是为什么......

+0

你的发送方法做什么? [JavaMail调试输出](https://javaee.github.io/javamail/FAQ#debug)显示什么? –

+0

只发送一些标志和记录的电子邮件地址 – iCodeLikeImDrunk

+0

详细信息?它是唯一使用Transport.send方法的JavaMail API吗?和调试输出?当你说“发送的电子邮件有附件的电子邮件”,这是否意味着你有一个消息/ rfc822附件,这是另一个完整的电子邮件? –

相关问题