Khi tôi cố gắng để gửi một mail từ scala Playmework, tôi đã lỗi sau,gửi email đến máy chủ sau thất bại: 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
Làm thế nào để giải quyết lỗi này?
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"
Không điều này cũng không hoạt động. Bây giờ ứng dụng khung Play của tôi chạy trên VPS (máy chủ riêng ảo của tôi) .Tôi chưa có chứng chỉ SSL cho VPS của mình. Tôi có muốn thêm chứng chỉ SSL để truy cập gmail SMTP bằng SSL không? hoặc cần phải cấu hình bất cứ điều gì trong VPS của tôi? – Ramprasad
@Ram Có một cách giải quyết khác để sử dụng smtp.gmail.com không có SSL ([liên kết nhóm google topic] (http://productforums.google.com/forum/#!topic/gmail/G6rE7PFX4rM)) Nhưng có vẻ phức tạp hơn việc thêm SSL trên máy chủ. –