我正在开发一个播放应用程序,该应用程序托管在Ubuntu 14.04服务器上,并希望系统发送邮件(用于密码检索)。使用Play Mailer plugin,我只是将配置留空
# mail
mailers.from=""
smtp.host=localhost
#smtp.port=
#smtp.ssl=
#smtp.tls=
#smtp.user=""
#smtp.password=""
但这会导致异常
play.api.Application$$anon$1: Execution exception[[RuntimeException: org.apache.commons.mail.EmailException: Sending the email to the following server failed : localhost:25]]
at play.api.Application$class.handleError(Application.scala:293) ~[play_2.10.jar:2.2.3]
at play.api.DefaultApplication.handleError(Application.scala:399) [play_2.10.jar:2.2.3]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:264) [play_2.10.jar:2.2.3]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:264) [play_2.10.jar:2.2.3]
at scala.Option.map(Option.scala:145) [scala-library.jar:na]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3.applyOrElse(PlayDefaultUpstreamHandler.scala:264) [play_2.10.jar:2.2.3]
虽然它可以与Google Mail帐户配合使用,但我不认为有工作帐户的必要性。有没有办法在没有第三方帐户的情况下发送邮件? documentation将其声明为可选。
答案 0 :(得分:1)
Play框架和提到的Mailer插件都没有任何内置的SMTP服务器,因此您需要一个外部服务器才能发送邮件。这就是Mailer插件需要SMTP主机的原因。
smtp.host(必填)
认证凭据在文档中标记为可选的原因是您可以将SMTP服务器配置为接受未经身份验证的连接。
例如,如果您的Play应用程序和SMPT服务器位于同一本地网络中且服务器无法公开访问,那么您可能认为不需要进行身份验证,因为它仅针对该特定应用程序而设计。
简而言之,如果您希望能够在没有任何第三方帐户的情况下发送邮件,则需要本地SMTP服务器。