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 错误 [pool-3-thread-4] nluMailerImpl [Logging.scala:239] 无法发送邮件 java.lang.ClassCastException:gnu.mail.handler.TextPlain 无法转换为javax.activation.MailcapCommandMap.getDataContentHandler 的 javax.activation.DataContentHandler(MailcapCommandMap.java:596) ~[activation-1.1.jar:1.1] 在 javax.activation.MailcapCommandMap.createDataContentHandler(MailcapCommandMap.java:550) ~[activation-1.1 .jar:1.1] 在 javax.activation.DataHandler.getDataContentHandler(DataHandler.java:611) ~[activation-1.1.jar:1.1] 在 javax.activation.DataHandler.writeTo(DataHandler.java:315) ~[activation-1.1 .jar:1.1] 在 javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:261) ~[mail-1.4.1.jar:1.4.1] 在 javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java :1321)~[mail-1.4.1.jar:1.4.1] 在 javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2074)~[mail-1.4.1.jar:1.4.1] 在 javax。 mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042) ~[mail-1.4.1.jar:1.4.1] at 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激活依赖有问题。切换到最新版本的码头(7.3)修复它!

于 2011-05-24T09:13:02.277 回答