2013-10-10 16 views
11

Quando cerco di inviare una mail da Scala Playmework, mi sono seguente errore,invio della posta elettronica al seguente server guasto: 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 

Come risolvere questo errore?

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" 

risposta

15

1. Ecco una configurazione di lavoro per GMail:

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

È necessario utilizzare porta 587 (e così attivare SSL)

2. Assicurarsi inoltre che autenticazione a due fattori non è attivata (altrimenti è necessario generare una nuova password applicazione)

3. Un'altra causa di errore di connessione: può sembrare una connessione sospetta .

in modo da controllare mail ricevute da Google sul suo account al fine di garantire il collegamento non è stato bloccato da Google (che succede se il gioco è ospitato in un altro paese diverso da quello che si è abituati a connettersi manualmente)

+0

No, questo non funziona. Ora l'applicazione my Play framework viene eseguita sul mio VPS (Virtual Private Server). Ancora non avevo il certificato SSL per il mio VPS.Shall voglio aggiungere il certificato SSL per accedere a SMTP gmail con SSL? o è necessario configurare nulla nel mio VPS? – Ramprasad

+1

@Ram C'è una soluzione alternativa per usare smtp.gmail.com senza SSL ([argomento gruppo Google link] (http://productforums.google.com/forum/#!topic/gmail/G6rE7PFX4rM)) Ma sembra più complicato di aggiungere SSL su un server. –

5

smtp: port = 587 non ha funzionato per me. ma la porta 465 ha funzionato per me.

E attivare Google impostazione enter image description here

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

si deve prima abilitare l'accesso in Google per meno sicuro App come indicato nella risposta precedente app meno sicuro. Ora cambia la porta in 465 e imposta ssl = true. Oppure puoi impostare port = 587 e tls = true. Questo perché la porta 465 è per SSL e la porta 587 è per TLS secondo le documentazioni ufficiali.

port = 465
ssl = true

** Si noti che port = 587 con SSL = true non funzionerà

0

Se vi sentite tutte le impostazioni siano corrette, ma ancora ottenere questo Messaggio; Suggerirei di guardare gli allegati. Stavo inviando un file .JAR che i server di Gmail non ti permettono di allegare e quindi rifiutava la mia email. Ho dovuto rinominare il file in .JARA per farlo funzionare.

Problemi correlati