2

次のコードを使用します。


sendMail(From(Props.get("email")), Subject("Test Email"), To("email@address"),
                   PlainMailBodyType("test email body"));

そして Boot.scala では:


 System.setProperty("mail.smtp.starttls.enable","false");
    System.setProperty("mail.smtp.host", host)
    System.setProperty("mail.smtp.auth", "true")
    Mailer.authenticator = Full(new Authenticator {
        override def getPasswordAuthentication = new PasswordAuthentication(user, password)
      })

次のエラーが表示されます。

2011-05-23 18:49:02,868 ERROR [pool-3-thread-4] nluMailerImpl [Logging.scala:239] メールを送信できませんでした java.lang.ClassCastException: gnu.mail.handler.TextPlain をキャストできませんjavax.activation.DataContentHandler at javax.activation.MailcapCommandMap.getDataContentHandler(MailcapCommandMap.java:596) ~[activation-1.1.jar:1.1] javax.activation.MailcapCommandMap.createDataContentHandler(MailcapCommandMap.java:550) ~[activation-1.1] .jar:1.1] at javax.activation.DataHandler.getDataContentHandler(DataHandler.java:611) ~[activation-1.1.jar:1.1] at javax.activation.DataHandler.writeTo(DataHandler.java:315) ~[activation-1.1] .jar:1.1] at javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:261) ~[mail-1.4.1.jar:1.4.1] at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java) :1321) ~[mail-1.4.1.jar:1.4.1] at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2074) ~[mail-1.4.1.jar:1.4.1] at javax. mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042) ~[mail-1.4.1.jar:1.4.1] javax.mail.Transport.send(Transport.java:117) ~[mail-1.4.1] .jar:1.4.1] net.liftweb.util.MailerImpl$$anon$1$$anonfun$$init$$1.apply(Mailer.scala:176) ~[lift-util_2.8.1-2.3.jar:2.3]3]3]

このコードは、あるボックスでは機能しますが、別のボックスでは機能しません。何か案は?

4

2 に答える 2

2

Linux ディストリビューションに付属の Jetty パッケージを使用する場合の代替ソリューション。

この問題は、JavaMail の GNU 実装でのみ発生するようです。代わりに Sun の実装を使用できれば、問題なく動作します。少なくとも、私には問題ありませんでした。

Sun の javamail の追加: sbt が Lift プロジェクトの lib_managed/ フォルダーの下に配置したactivation-1.1.jar と mail-1.4.1.jar を取得し、サーバーの /usr/share/jetty/lib/ の下に配置しました。

GNU javamail の削除: 残念ながら、/etc/jetty/start.config から gnumail.jar をコメントアウトするだけでは、gnumail を削除するには不十分でした。Jetty はどうにかして gnumail.jar を見つけましたが、今度はメールが別の方法でクラッシュしました。スムーズに動作させるために、libgnumail-javaをアンインストールする必要があったため、それに依存するlibjetty-extraもアンインストールする必要がありました(Ubuntuを使用しています)。libjetty-extra が必要な場合は、Jetty が gnumail.jar を認識しないようにする別の方法が必要になります。

于 2011-06-26T12:28:10.043 に答える
1

どうやら、Jetty < 6.1.25 のバージョンの問題です。 http://olex.openlogic.com/packages/jetty/6.1.25アクティベーションの依存関係に問題があります。最新バージョンの jetty (7.3) に切り替えると修正されました。

于 2011-05-24T09:13:02.277 に答える