Ramprasad Ramprasad - 4 months ago 12
Scala Question

Sending the email to the following server failed : smtp.gmail.com:25

When I try to send a mail from scala Playmework, I got following error,

[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


How to solve this error?

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"

Answer

1. Here is a working configuration for GMail :

smtp.host=smtp.gmail.com
smtp.port=587
smtp.ssl=yes
smtp.user="me@gmail.com"
smtp.password="myPassword"

You must use port 587 (and so activate SSL)

2. Also ensure that Two factor authentication is not activated (otherwise you must generate a new application password)

3. Another cause of connection fail : it can be seemed like a suspect connection.

So check mails received from google on your account to ensure the connection has not been blocked by google (happens if play is hosted in another country than the one you are used to connect manually)

Comments