15

当我尝试从 scala Playmework 发送邮件时,出现以下错误,

[ERROR] [10/10/2013 13:31:16.263] [play-akka.actor.default-dispatcher-75] [TaskInvocation] Sending the email to the following server failed : smtp.gmail.com:25
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:25
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
    at org.apache.commons.mail.Email.send(Email.java:1267)
    at com.typesafe.plugin.CommonsMailer.send(MailerPlugin.scala:241)
    at com.typesafe.plugin.MailerBuilder$class.sendHtml(MailerPlugin.scala:204)
    at com.typesafe.plugin.CommonsMailer.sendHtml(MailerPlugin.scala:215)
    at models.SignUpProcess$$anonfun$models$SignUpProcess$$sendEmail$1.apply$mcV$sp(SignUpProcess.scala:261)
    at akka.actor.DefaultScheduler$$anon$8.run(Scheduler.scala:193)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:137)
    at scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1417)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Caused by: javax.mail.AuthenticationFailedException
    at javax.mail.Service.connect(Service.java:319)
    at javax.mail.Service.connect(Service.java:169)
    at javax.mail.Service.connect(Service.java:118)
    at javax.mail.Transport.send0(Transport.java:188)
    at javax.mail.Transport.send(Transport.java:118)
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
    ... 12 more

如何解决这个错误?

SignUpProcess.scala

private def sendEmail(subject: String, recipient: String, bodyString:Html) {

        import scala.concurrent.duration._
        import play.api.libs.concurrent.Execution.Implicits._

        Akka.system.scheduler.scheduleOnce(1 seconds) {
          val mail = use[MailerPlugin].email
          mail.setSubject(subject)
          mail.addRecipient(recipient)
          mail.addFrom("innodeagcm@gmail.com")
          println(bodyString)


          mail.sendHtml(bodyString.toString)
        }
}

应用程序.conf

smtp.host = smtp.gmail.com
smtp.port = 465
smtp.ssl = true
smtp.tls = no
smtp.user = "companymail@gmail.com"
smtp.password = "mypassword"
4

5 回答 5

21

1. 这是GMail的工作配置:

smtp.host=smtp.gmail.com
smtp.port=587
smtp.ssl=yes
smtp.user="me@gmail.com"
smtp.password="myPassword"

您必须使用端口 587(因此激活SSL

2.还要确保没有激活双因素身份验证(否则您必须生成新的应用程序密码)

3.连接失败的另一个原因:它可能看起来像是一个可疑的连接

因此,请检查您帐户上从 google 收到的邮件,以确保连接没有被 google 阻止(如果游戏托管在另一个国家/地区,而不是您用于手动连接的国家/地区,则会发生这种情况)

于 2013-10-10T11:32:13.993 回答
11

smtp:port=587 对我不起作用。但端口 465 对我有用。

并打开谷歌不太安全的应用设置在此处输入图像描述

smtp.host=smtp.gmail.com
smtp.port=465
smtp.ssl=true
于 2015-09-03T10:57:52.553 回答
6

您应该首先在 Google 中启用安全性较低的应用程序的访问权限,如上述答案所示。现在将端口更改为 465 并设置 ssl=true。或者您可以设置 port=587 和 tls=true。这是因为根据官方文档,端口 465 用于 SSL,端口 587 用于 TLS。

端口=465
SSL=真

**请注意,端口=587 和 ssl=true 将不起作用

于 2016-08-03T06:55:58.273 回答
0

如果您觉得所有设置都正确,但仍然收到此消息;建议看附件。我正在发送一个.JAR文件,gmail 服务器不允许您附加该文件,因此它拒绝了我的电子邮件。我必须将文件重命名为.JARA才能使其正常工作。

于 2016-11-20T23:51:45.663 回答
0

我已经阅读了这里的所有评论,并且我取得了成功。出于这个原因:这是我可以完美运行的代码。

smtp.host=smtp.gmail.com
smtp.port=465
smtp.ssl=true
smtp.auth=true
smtp.user="xxxxxx@gmail.com"
smtp.password=xxxxxxx
于 2019-11-25T03:46:19.910 回答