web-dev-qa-db-ja.com

次のサーバーへのメールの送信に失敗しました:smtp.gmail.com:25

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("[email protected]")
          println(bodyString)


          mail.sendHtml(bodyString.toString)
        }
}

application.conf

smtp.Host = smtp.gmail.com
smtp.port = 465
smtp.ssl = true
smtp.tls = no
smtp.user = "[email protected]"
smtp.password = "mypassword"
12
Ramprasad

1。これはGMailの動作する設定です:

smtp.Host=smtp.gmail.com
smtp.port=587
smtp.ssl=yes
smtp.user="[email protected]"
smtp.password="myPassword"

port 587を使用する必要があります(したがって、[〜#〜] ssl [〜#〜]

2。また、2要素認証がアクティブ化されていないことも確認してください(それ以外の場合は、新しいアプリケーションパスワードを生成する必要があります)

3。接続が失敗するもう1つの原因:疑わしい接続

アカウントでgoogleから受信したメールをチェックして、接続がgoogleによってブロックされていないことを確認してください(手動で接続するために使用されている国とは別の国でPlayがホストされている場合に発生します)

16
Julien D

smtp:port = 587は機能しませんでした。しかし、ポート465は私のために働いた。

安全性の低いアプリ設定をオンにします enter image description here

smtp.Host=smtp.gmail.com
smtp.port=465
smtp.ssl=true
7
naveen dahiya

上記の回答に示すように、まず安全性の低いアプリのGoogleでのアクセスを有効にする必要があります。次に、ポートを465に変更し、ssl = trueを設定します。または、port = 587とtls = trueを設定できます。これは、公式ドキュメントによると、ポート465がSSL用であり、ポート587がTLS用であるためです。

ポート= 465
ssl = true

** ssl = trueを指定したport = 587は機能しないことに注意してください

私はここへのすべてのコメントを読み、成功しました。このため、これは完全に機能する私のコードです。

smtp.Host=smtp.gmail.com
smtp.port=465
smtp.ssl=true
smtp.auth=true
smtp.user="[email protected]"
smtp.password=xxxxxxx
0
Anthony Puitiza

すべての設定が正しいと感じても、このメッセージが表示される場合は、添付ファイルを見ることをお勧めします。私は。JARファイルを送信していましたが、このファイルをGmailサーバーで添付できないため、メールを拒否していました。ファイル名を。JARAに変更して機能させる必要がありました。