将电子邮件发送到以下服务器失败: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的主要内容,如果未能解决你的问题,请参考以下文章

发送邮件说无法连接到服务器怎么办??

发邮件时提示这个错误是啥意思,邮件也收不到别人邮件了

发送电子邮件时 PEAR 邮件身份验证失败

SpringBoot项目本地可以发送邮件,部署到阿里云服务器发送邮件失败的解决方法

python2.7发送邮件失败之——邮箱安全问题

JavaMail在Windows平台下正常发送邮件,部署到Linux后则发送失败