Ошибка Lift Mailer: gnu.mail.handler.TextPlain нельзя преобразовать в javax.activation.DataContentHandler - PullRequest
2 голосов
/ 23 мая 2011

Используя следующий код:


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] n.l.u.MailerImpl [Logging.scala: 239] Не удалось отправить почту java.lang.ClassCastException: gnu.mail.handler.TextPlain нельзя привести к javax.activation.DataContentHandler. в javax.activation.MailcapCommandMap.getDataContentHandler (MailcapCommandMap.java:596) ~ [активации-1.1.jar: 1.1] в javax.activation.MailcapCommandMap.createDataContentHandler (MailcapCommandMap.java:550) ~ [активации-1.1.jar: 1.1] в javax.activation.DataHandler.getDataContentHandler (DataHandler.java:611) ~ [активации-1.1.jar: 1.1] в javax.activation.DataHandler.writeTo (DataHandler.java:315) ~ [активации-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] в 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 ]

2 голосов
/ 26 июня 2011

Альтернативное решение, если вы хотите использовать пакет Jetty, поставляемый с вашим дистрибутивом Linux.

Кажется, что проблема возникает только с GNU-реализацией JavaMail.Если вместо этого вы можете использовать реализацию Sun, то она работает нормально, или, по крайней мере, для меня.

Добавление javamail от Sun: я взял активацию-1.1.jar и mail-1.4.1.jar, которые поместил sbtв папке lib_managed / моего проекта Lift и поместил их в / usr / share / jetty / lib / на сервере.

Удаление GNU javamail: К сожалению, комментируем gnumail.jar из / etc / jetty/start.config было недостаточно, чтобы избавиться от gnumail.Jetty почему-то все еще нашел gnumail.jar, и теперь письма просто перестали работать по-другому.Чтобы все работало гладко, мне пришлось удалить libgnumail-java и, следовательно, также libjetty-extra, который зависит от этого (я использую Ubuntu).Если вам нужен libjetty-extra, вам понадобится другой способ убедиться, что Jetty не увидит gnumail.jar.

1 голос
/ 24 мая 2011

Видимо, это проблема в версиях Jetty <6.1.25.<a href="http://olex.openlogic.com/packages/jetty/6.1.25" rel="nofollow">http://olex.openlogic.com/packages/jetty/6.1.25 Что-то не так с зависимостью активации.Переход на последнюю версию Jetty (7.3) это исправлено!

...