0

メールの送信 org.apache.commons.mail.MultiPartEmail.send() は、本文が空のメールを送信します。commons-email 1.2、1.3.1、1.3.3 で試しました。Java 1.7.0_55 は、空の電子メール本文の原因となった最も古いバージョンです。

4

1 に答える 1

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(); を呼び出します。特定の状況の1つです。

アプリケーションで

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

電子メールを送信する前に呼び出されます。new AttachmentPartImpl(); を返すだけです。ヘッダーが含まれています = new MimeHeaders(); new 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();
于 2014-10-11T16:58:12.050 に答える