是否有人知道需要在Play Framework项目的smtp
文件中应用的application.conf
设置才能在localhost上发送电子邮件?
在我的单元测试期间,我收到错误:
已捕获play.exceptions.MailException,无法发送电子邮件
Play的开发人员发送电子邮件非常简单,我弄乱的唯一方法就是使用配置文件中的设置。
我尝试过使用:
mail.smtp=mock
我尝试评论上面的一行并使用:
mail.smtp.host=127.0.0.1
这两种方法都不起作用。我知道这可能是一个非常棒的问题,但我以前从未真正处理过设置电子邮件的问题 - 所以我很感激能够提供任何帮助。
如果我无法发送电子邮件,因为Play无法用作SMTP服务器,有什么方法可以使用mail.smtp=mock
“模拟发送”电子邮件并允许我的测试通过了吗?
有用的链接
答案 0 :(得分:9)
为了更好地诊断问题,您可以使用以下设置(在application.conf中)提供有关电子邮件发送过程的更多详细信息。
mail.debug=true
但是,出于测试目的,我发现使用GMail是发送电子邮件的最简单方法。 配置(再次在application.conf中)是......
mail.smtp.host=smtp.gmail.com
mail.smtp.user=yourGmailLogin
mail.smtp.pass=yourGmailPassword
mail.smtp.channel=ssl
有关所有配置的完整详细信息,Play Framework页面提供了大量有关如何执行此操作的信息。
答案 1 :(得分:1)
我使用1.2.4。 (尚未移植......)
play.mvc.Mailer.send()可能会失败的原因有多种,但是如果你看一下抛出的异常的第一级,那么真正的原因会被抑制,因为抛出的是(play.mvc.Mailer.java :349):
throw new MailException("Cannot send email", ex);
play.exceptions.MailException继承自java.lang.RuntimeException。真正的例外,ex,被设定为原因。
我建议您查看原因字段。例如:
try {
Future<Boolean> future = play.mvc.Mailer.send(...);
} catch(MailException me) {
System.out.println(me.getCause().getMessage());
}
这可能会打印出更有用的东西。
答案 2 :(得分:1)
对于未来的开发人员,我在Mac OSX上使用Play2.1,这是我发送给localhost的邮件配置......
host=localhost
port=1025
user="root@localhost"
from="root@localhost"
使用Mac商店http://mocksmtpapp.com/
提供的MockSMTP应用程序还使用typesafe插件
https://github.com/typesafehub/play-plugins/tree/master/mailer
我希望这可以在将来帮助某人。