将电子邮件发送到以下服务器失败:smtp.gmail.com:25
Posted
技术标签:
【中文标题】将电子邮件发送到以下服务器失败:smtp.gmail.com:25【英文标题】:Sending the email to the following server failed : smtp.gmail.com:25 【发布时间】:2013-10-18 01:01:46 【问题描述】:当我尝试从 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)
application.conf
smtp.host = smtp.gmail.com
smtp.port = 465
smtp.ssl = true
smtp.tls = no
smtp.user = "companymail@gmail.com"
smtp.password = "mypassword"
【问题讨论】:
如果您在尝试了所有已知解决方案后仍收到此错误,请确保您的计算机上没有运行防病毒软件。卸载 Avast 后,一切顺利。 【参考方案1】: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 阻止(如果游戏托管在您用于手动连接的国家以外的其他国家/地区,则会发生这种情况)
【讨论】:
不,这也行不通。现在我的 Play 框架应用程序在我的 VPS(虚拟专用服务器)上运行。我的 VPS 仍然没有 SSL 证书。我想添加 SSL 证书以使用 SSL 访问 gmail SMTP 吗?还是需要在我的 VPS 中配置任何东西? @Ram 有一种解决方法可以在没有 SSL 的情况下使用 smtp.gmail.com (link google group topic) 但似乎比在服务器上添加 SSL 更复杂。【参考方案2】:smtp:port=587 对我不起作用。但端口 465 对我有用。
并开启谷歌不太安全的应用设置
smtp.host=smtp.gmail.com
smtp.port=465
smtp.ssl=true
【讨论】:
这很有帮助。【参考方案3】:您应该首先在 Google 中启用安全性较低的应用程序的访问权限,如上述答案所示。现在将端口更改为 465 并设置 ssl=true。或者您可以设置 port=587 和 tls=true。这是因为根据官方文档,端口 465 用于 SSL,端口 587 用于 TLS。
端口=465 ssl=true
**请注意,端口=587 和 ssl=true 将不起作用
【讨论】:
【参考方案4】:如果您觉得所有设置都正确,但仍然收到此消息;建议看附件。我正在发送一个 .JAR 文件,gmail 服务器不允许您附加该文件,因此它拒绝了我的电子邮件。我必须将文件重命名为 .JARA 才能正常工作。
【讨论】:
【参考方案5】:我已经阅读了这里的所有评论并且我取得了成功。出于这个原因:这是我可以完美运行的代码。
smtp.host=smtp.gmail.com
smtp.port=465
smtp.ssl=true
smtp.auth=true
smtp.user="xxxxxx@gmail.com"
smtp.password=xxxxxxx
【讨论】:
以上是关于将电子邮件发送到以下服务器失败:smtp.gmail.com:25的主要内容,如果未能解决你的问题,请参考以下文章