2013-10-10 2 views
11

Когда я пытаюсь отправить почту с Playmework лестницу, я получил следующее сообщение об ошибке,Отправка электронной почты к следующему серверу не удалось: smtp.gmail.com:25

[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" 

ответ

15

1. Вот рабочая конфигурация для GMail:

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

Вы должны использовать порт 587 (и таким образом активировать SSL)

2. обеспечить также, что Два фактора аутентификации не активирован (в противном случае вы должны создать новый пароль приложения)

3. Другая причина отказа подключения: это может показаться подозрительным соединением.

Так проверяют письма, полученные от Google на свой счет, чтобы обеспечить соединение не блокируется Google (бывает, если игра прошла в другой стране, чем тот, который вы использовали для подключения вручную)

+0

Нет, это также не работает. Теперь мое приложение Framework Framework работает на моем VPS (виртуальном частном сервере). До сих пор у меня не было SSL-сертификата для моего VPS.Shall. Я хочу добавить сертификат SSL для доступа к SMTP-серверу gmail с SSL? или нужно что-то настроить в моем VPS? – Ramprasad

+1

@Ram Существует обходной путь для использования smtp.gmail.ком без SSL ([ссылка Google групповой темы] (http://productforums.google.com/forum/#!topic/gmail/G6rE7PFX4rM)) Но кажется более сложным, чем добавить SSL на сервере. –

5

SMTP: порт = 587 не работал для меня. но порт 465 работал для меня.

И очередь на Google менее безопасного приложении настройки enter image description here

smtp.host=smtp.gmail.com 
smtp.port=465 
smtp.ssl=true 
1

Вы должны сначала включить доступ в Google для более безопасного приложения, как показано в приведенном выше ответа. Теперь измените порт на 465 и установите ssl = true. Или вы можете установить порт = 587 и tls = true. Это связано с тем, что порт 465 предназначен для SSL, а порт 587 предназначен для TLS в соответствии с официальными документами.

порт = 465
= SSL верно

** Обратите внимание, что порт = 587 с = SSL истинного не будет работать

0

Если вы чувствуете, все настройки являются правильными, но по-прежнему получают это сообщение; Я бы предложил посмотреть на приложения. Я отправлял файл .JAR, который серверы gmail не позволят вам подключать, и, следовательно, он отклонил мою электронную почту. Мне пришлось переименовать файл в .JARA, чтобы он работал.

Смежные вопросы