发送电子邮件org.apache.commons.mail.MultiPartEmail.send()会发送包含空主体的电子邮件。我尝试过commons-email 1.2,1.3.1,1.3.3。 Java 1.7.0_55是最早导致空邮件正文的版本。
答案 0 :(得分:1)
根据http://www.oracle.com/technetwork/java/javase/7u55-relnotes-2177812.html#knownissues-7u55 初始化SAAJ组件后,javax.mail库可能无法在某些情况下工作,这反过来可能会破坏javax.mail的JAF设置。 一种可能的解决方法是在使用javax.mail API之前重新添加javax.mail处理程序:
MailcapCommandMap mailMap = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
mailMap.
addMailcap("multipart/mixed;;x-java-content-handler=com.sun.mail.handlers.multipart_mixed");"
调用new AttachmentPartImpl();是某种情况之一。
在申请中
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.createAttachmentPart()
在发送电子邮件之前调用。 它只会返回新的AttachmentPartImpl();其中包含headers = new MimeHeaders(); 调用新的MimeHeaders()不足以使空体发生。调用new AttachmentPartImpl();在发送邮件之前导致空体。 在使用javax.mail API之前重新添加javax.mail处理程序解决了这个问题。
MultiPartEmail email = new MultiPartEmail();
email.setHostName(smtpServer);
email.addTo(to);
email.setFrom(from);
email.setSubject(subject);
email.setMsg(msg);
email.setSocketTimeout(20000);
email.setSocketConnectionTimeout(20000);
// SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
// soapMessage.createAttachmentPart(); // enough for empty body
new AttachmentPartImpl(); // enough for empty body
// new MimeHeaders(); not enough for empty body
email.send();