【发布时间】:2019-02-22 07:50:36
【问题描述】:
我正在尝试通过 Play Framework Mailer 类发送电子邮件,但我不断收到相同的 ClassCastException。这是控制台输出:
-- Exception in thread "DataHandler.getInputStream" java.lang.ClassCastException: javax.mail.internet.MimeMultipart cannot be cast to java.lang.String
-- at org.apache.geronimo.mail.handlers.TextHandler.writeTo(TextHandler.java:143)
-- at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:889)
-- at javax.activation.DataHandler$1.run(DataHandler.java:266)
-- at java.lang.Thread.run(Thread.java:748)
-- 16:48:06,606 ERROR ~
--
-- @79gebib82
-- The email has not been sent
--
-- Mail error
-- A mail error occurred : Error while sending email
--
-- play.exceptions.MailException: Error while sending email
-- at play.libs.Mail$1.call(Mail.java:193)
-- at play.libs.Mail$1.call(Mail.java:184)
-- at java.util.concurrent.FutureTask.run(FutureTask.java:262)
-- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
-- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
-- at java.lang.Thread.run(Thread.java:748)
-- Caused by: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.mailgun.org:465
-- at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1421)
-- at org.apache.commons.mail.Email.send(Email.java:1448)
-- at play.libs.Mail$1.call(Mail.java:190)
-- ... 5 more
-- Caused by: javax.mail.SendFailedException: Send failure (javax.mail.MessagingException: Converting body of type text/html; charset=UTF-8 failed)
-- at javax.mail.Transport.send(Transport.java:163)
-- at javax.mail.Transport.send(Transport.java:48)
-- at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1411)
-- ... 7 more
-- Caused by: javax.mail.MessagingException: Converting body of type text/html; charset=UTF-8 failed
-- at com.google.appengine.api.mail.stdimpl.GMTransport.convertAttachmentToString(GMTransport.java:368)
-- at com.google.appengine.api.mail.stdimpl.GMTransport.sendMessage(GMTransport.java:217)
-- at javax.mail.Transport.send(Transport.java:95)
-- ... 9 more
这是我用来发送电子邮件的代码:
SimpleEmail email = new SimpleEmail();
email.setFrom("noreply@draftr.app");
email.addTo("signup@draftr.app");
email.setSubject("New Pending User");
email.setMsg("Hey this is a test");
Mail.send(email);
我正在使用 Mailgun 发送我的电子邮件,这似乎不是该配置的问题。在分支出一个现有的、功能性的、正在运行并正确发送电子邮件的应用程序后,我遇到了这个错误。
因此,ClassCastException 没有多大意义,因为我使用与现有应用程序相同的架构和 html 表单样式。什么给了?
【问题讨论】:
-
对不起,我在上面没有看到
ClassCastException。我在convertAttachmentToString(...)上看到了故障。是否有其他信息表明ClassCastException? -
@KevinO 我很抱歉。我更新了日志输出。现在应该在那里
-
SimpleEmail 和 Mail 是您的课程吗?能把代码放上来吗?
-
@RafałSokalski 不。
SimpleMail来自apache.commons.mail,Mail是 PlayFramework 类 -
你能把依赖放到 PlayFramework 吗?
标签: java email playframework