と非同期メールを送信することができません私は最近、このガイドhttps://www.playframework.com/documentation/2.5.x/Migration25 次2.5を再生するには、プレイ2.3から自分のアプリケーションを移行していないと私はあまりにもプレイメーラーを更新ここhttps://github.com/playframework/play-mailerプレイ2.5
を指定したものによると今、私のアプリは、もはやあり電子メールを送信することができます。
CompletableFuture.runAsync(() -> mailerClient.send(email)).exceptionally(exc -> {exc.printStackTrace(); return null;});
しかし、私は、マルチパートMIMEタイプについての対応無しの欠如についてのエラーを取得しておく::私は、私は非同期タスクにメールを送る方法を実行メーラーインスタンス
@Inject public SmtpConnector(MailerClient mailer)
{
this.mailerClient = mailer;
MailcapCommandMap mc = (MailcapCommandMap) MailcapCommandMap.getDefaultCommandMap();
mc.addMailcap("text/html;; x-java-content- handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
CommandMap.setDefaultCommandMap(mc);
}
を噴射するインジェクタコンストラクタを作成し
... java.util.concurrent.CompletableFuture $ AsyncRun.run(CompletableFuture.java:1626)... 5は、もっとによって引き起こさ:メートルを送信しているときにIOException:javax.mail.MessagingExceptionエッセージ;ネストされた例外は次のとおりです。javax.activation.UnsupportedDataTypeException:MIMEタイプmultipart/alternativeのオブジェクトDCHなし。 javax.mailのjavax.mail.Transport.send0(Transport.java:195)のcom.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1177)でのboundary = "---- = _ Part_0_1284684208.1469102367572" .Transport.send(Transport.java:124)at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1411)... 14もっとひどい原因:javax.activation.UnsupportedDataTypeException:オブジェクトがありませんMIMEタイプのDCHマルチパート/代替; (DataHandler.java:896)、javax.activation.DataHandler.writeTo(DataHandler.java:317)at javax.mail.internet.MimeBodyPart(javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:896))の境界は、 "---- = _ Part_0_1284684208.1469102367572" .writeTo(MimeBodyPart.java:1485)at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1773)at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1121)... 17もっと見る
しかし:あなたが上見ることができるように
は、私は、インジェクタのコンストラクタでそれらを設定
私はIDE/ClassPath(build.sbtのsbt/packageバージョンのみ)で何も変更していませんでした。javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed; boundaryを試しましたが、結果はありませんでした。現在のスレッドコンテキストのアプローチにより、セキュリティ例外が発生する
回避策はありますか? Playフレームワーク2.5でJava APIを使用して電子メールを送信する方法がありますか?
UPDATE 1:
jmehrensの提案によると、私はそれが私が得たものだ、デバッグフラグを有効化:
は、DCHがcom.sun.mail.handlers.multipart_mixed読み込むことができません。 例外:java.lang.ClassNotFoundExceptionが:COM /日/メール/ハンドラ/
をmultipart_mixedそしてこのgithubのによります。COM/playframework/PLAY-メーラー/問題/ 104の問題は、プレイコントローラ
UPDATE 2のコンテキストからメソッドを呼び出すことではないによってトリガーようだ:最初からクラスの出力:ここでは、-verboseを見つけることができます 例外まで:s000.tinyupload.com/?file_id=50323853839855936002
UPDATE 3:s000.tinyupload.com/:あなたはjmehrensにより示唆されるようにダンプのgetClass()のクラスローダを見つけることができます。ここ
? file_id = 51200633758480523188
されていますが、 'javax.activation.debug = true'に質問に出力を追加し、システムのプロパティを設定することが可能でしょうか?また、 'javax.mail.Session'、' javax.activation.DataHandler'、現在のコンテキストクラスローダー、 'mailerClient'のクラスローダーのクラスローダーツリーを出力してみるべきです。 – jmehrens
呼び出し側クラスローダーのレイアウトに問題があるように見えます。クラスローダーツリーを印刷できましたか? [コード例210-215と268-276のコード例(https://java.net/projects/javamail/sources/mercurial/content/logging/src/main/java/MailHandlerDemo.java?rev=838) ) – jmehrens