2011-05-23 77 views
2

使用下面的代码:提起梅勒错误:gnu.mail.handler.TextPlain不能转换到javax.activation.DataContentHandler


sendMail(From(Props.get("email")), Subject("Test Email"), To("[email protected]"), 
        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.createDataContentHandler(MailcapCommandMap.java:550)处的javax.activation.MailcapCommandMap.getDataContentHandler(MailcapCommandMap.java:596)〜[activation-1.1.jar:1.1] 上强制转换为javax.activation.DataContentHandler 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] at javax.mail.Transport.send(Transport.java:117)〜[ mail-1.4.1.jar:1.4.1] at net.liftweb.util.MailerImpl $$ anon $ 1 $$ anonfun $$ init $$ 1.apply(Mailer.scala:176)〜[lift-util_2.8.1- 2.3.jar:2.3]

此代码适用于一个盒子,而不适用于另一盒子。有任何想法吗?

回答

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。

+1

使用带有jetty和libjetty-extra的Ubuntu 11 oneiric我能够简单地从我的/ usr/share/java目录中删除所有gnumail * jar,并通过sun邮件支持正确启动我的webapp。 – 2011-10-30 06:44:52

+0

Ubuntu maverick:能够通过简单的apt-get删除libgnumail-java && service jetty restart – 2012-04-28 08:53:29