joscha / play-authenticate

An authentication plugin for Play Framework 2.x (Java)
http://joscha.github.com/play-authenticate/
Other
807 stars 367 forks source link

Outgoing email not working #282

Closed slimandslam closed 8 years ago

slimandslam commented 8 years ago

For the play-authenticate-usage sample on Master under Play 2.4.3, I'm using this smtp.conf file (which works fine under Play 2.3.10 using play-authenticate 0.6.4 on the same laptop, but a different app):

# SMTP mailer settings
play.mailer {
        # SMTP server
        # (mandatory)
        # defaults to gmail
        host=smtp.gmail.com

        # SMTP port
        # defaults to 25
        port=587

        # Use SSL
        # for GMail, this should be set to true
        ssl=true

        # authentication user
        # Optional, comment this line if no auth
        # defaults to no auth
        user="myaccount@gmail.com"

        # authentication password
        # Optional, comment this line to leave password blank
        # defaults to no password
        password=mypass
    }   

When I try to do something with the sample app that requires authentication, I get this exception:

[ERROR] [09/14/2015 18:43:29.038] [application-akka.actor.default-dispatcher-23] [TaskInvocation] Sending the email to the following server failed : smtp.gmail.com:587
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:587
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1410)
    at org.apache.commons.mail.Email.send(Email.java:1437)
    at play.api.libs.mailer.CommonsMailer$$anon$2.send(MailerPlugin.scala:102)
    at play.api.libs.mailer.SMTPMailer.send(MailerPlugin.scala:127)
    at play.api.libs.mailer.CommonsMailer.send(MailerPlugin.scala:109)
    at play.api.libs.mailer.MailerClient$class.send(MailerPlugin.scala:44)
    at play.api.libs.mailer.CommonsMailer.send(MailerPlugin.scala:83)
    at play.libs.mailer.MailerPlugin.send(MailerPlugin.java:14)
    at com.feth.play.module.mail.Mailer$MailJob.run(Mailer.java:270)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
  nested exception is:
    javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
    at javax.mail.Service.connect(Service.java:317)
    at javax.mail.Service.connect(Service.java:176)
    at javax.mail.Service.connect(Service.java:125)
    at javax.mail.Transport.send0(Transport.java:194)
    at javax.mail.Transport.send(Transport.java:124)
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1400)
    ... 14 more
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)
    at sun.security.ssl.InputRecord.read(InputRecord.java:527)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:961)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1391)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1375)
    at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:548)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:352)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:207)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
    ... 21 more
joscha commented 8 years ago

Can you try port 465? According to here: https://support.google.com/a/answer/176600?hl=en 587 is for TLS.

joscha commented 8 years ago

I think the API changed in the latest play-mailer (https://github.com/playframework/play-mailer) - You can also use tls=yes with port 587 and set ssl=no.

slimandslam commented 8 years ago

Yes. That's correct. Thanks.