Lorsque j'essaie d'envoyer un e-mail depuis scala Playmework, je reçois l'erreur suivante,
[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
Comment résoudre cette erreur?
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"
1. Voici une configuration de travail pour GMail:
smtp.Host=smtp.gmail.com
smtp.port=587
smtp.ssl=yes
smtp.user="[email protected]"
smtp.password="myPassword"
Vous devez utiliser port 587 (et donc activer SSL )
2. Assurez-vous également que L'authentification à deux facteurs n'est pas activée (sinon vous devez générer un nouveau mot de passe d'application)
. Une autre cause d'échec de connexion: cela peut ressembler à connexion suspecte.
Vérifiez donc les e-mails reçus de Google sur votre compte pour vous assurer que la connexion n'a pas été bloquée par Google (cela se produit si le jeu est hébergé dans un autre pays que celui que vous utilisez pour vous connecter manuellement)
Vous devez d'abord activer l'accès dans Google pour une application moins sécurisée, comme indiqué dans la réponse ci-dessus. Maintenant, changez le port en 465 et définissez ssl = true. Ou vous pouvez définir port = 587 et tls = true. C'est parce que le port 465 est pour SSL et le port 587 est pour TLS selon les documentations officielles.
port = 465
ssl = true
** Notez que port = 587 avec ssl = true ne fonctionnera pas
J'ai lu tous les commentaires ici et j'ai eu du succès. Pour cette raison: c'est mon code qui pourrait parfaitement fonctionner.
smtp.Host=smtp.gmail.com
smtp.port=465
smtp.ssl=true
smtp.auth=true
smtp.user="[email protected]"
smtp.password=xxxxxxx
Si vous pensez que tous les paramètres sont corrects, mais que vous obtenez toujours ce message; Je suggère de regarder les pièces jointes. J'envoyais un fichier . JAR que les serveurs Gmail ne vous permettraient pas de joindre et donc il rejetait mon e-mail. J'ai dû renommer le fichier en . JARA pour le faire fonctionner.