2014-10-09 54 views

回答

1

根据http://www.oracle.com/technetwork/java/javase/7u55-relnotes-2177812.html#knownissues-7u55 在初始化SAAJ组件后,javax.mail库可能无法在某些情况下工作,这反过来可能会破坏javax.mail的JAF设置。 可能的解决方法是使用API​​ javax.mail之前重新添加javax.mail处理程序:

MailcapCommandMap mailMap = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); 
mailMap. 
    addMailcap("multipart/mixed;;x-java-content-handler=com.sun.mail.handlers.multipart_mixed");" 

调用新AttachmentPartImpl();是某些情况之一。

在应用

com.sun.xml.internal.messaging.saaj.soap.MessageImpl.createAttachmentPart() 

发送电子邮件之前被调用。 它没有别的,但返回新的AttachmentPartImpl();其中包含headers = new MimeHeaders(); 调用新的MimeHeaders()不足以发生空主体。调用新的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();