2016-09-28 2 views
1

Я пытаюсь отправить электронную почту из своего игрового приложения. Я использую play-mailer plugin Я сделал все инструкции, но по-прежнему не может подключиться к GMAILPlay framework 2.5 отправка электронной почты

application.conf

play.mailer { 

    debug = true 
    host = smtp.gmail.com 
    port = 465 
    ssl = true 
    ttl = false 
    user = "to******[email protected]" 
    password = "T****in" 
} 

задача отправки

public static void sendSignUpMsg(MailerClient mailerClient, String verificationLink) { 

Email email = new Email() 
     .setSubject("Simple email") 
     .setFrom("t***[email protected]") 
     .addTo("d****[email protected]") 
     .setBodyText("A text message"); 
mailerClient.send(email); 
} 

Так что я получил исключение

 play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[CompletionException: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465]] 
     at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:280) 
     at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:206) 
     at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160) 
     at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188) 
     at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:98) 
     at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100) 
     at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99) 
     at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:344) 
     at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:343) 
     at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) 
    Caused by: java.util.concurrent.CompletionException: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465 
     at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292) 
     at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308) 
     at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593) 
     at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577) 
     at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474) 
     at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977) 
     at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:21) 
     at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:18) 
     at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) 
     at scala.concurrent.BatchingExecutor$Batch$$anonfun$run$1.processBatch$1(BatchingExecutor.scala:63) 
    Caused by: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465 
     at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1421) 
     at org.apache.commons.mail.Email.send(Email.java:1448) 
     at play.api.libs.mailer.SMTPMailer$$anon$2.send(MailerPlugin.scala:100) 
     at play.api.libs.mailer.CommonsMailer.send(MailerPlugin.scala:130) 
     at play.api.libs.mailer.SMTPMailer.send(MailerPlugin.scala:110) 
     at play.api.libs.mailer.SMTPDynamicMailer.send(MailerPlugin.scala:117) 
     at play.api.libs.mailer.MailerClient$class.send(MailerPlugin.scala:56) 
     at play.api.libs.mailer.SMTPDynamicMailer.send(MailerPlugin.scala:114) 
     at services.EmailService.sendSignUpMsg(EmailService.java:14) 
     at services.ValidationService.sendVerificationMail(ValidationService.java:33) 
    Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465 
     at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2055) 
     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697) 
     at javax.mail.Service.connect(Service.java:386) 
     at javax.mail.Service.connect(Service.java:245) 
     at javax.mail.Service.connect(Service.java:194) 
     at javax.mail.Transport.send0(Transport.java:253) 
     at javax.mail.Transport.send(Transport.java:124) 
     at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1411) 
     at org.apache.commons.mail.Email.send(Email.java:1448) 
     at play.api.libs.mailer.SMTPMailer$$anon$2.send(MailerPlugin.scala:100) 
    Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
     at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
     at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949) 
     at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) 
     at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) 
     at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509) 
     at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) 
     at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) 
     at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) 
    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
     at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) 
     at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) 
     at sun.security.validator.Validator.validate(Validator.java:260) 
     at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) 
     at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) 
     at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) 
     at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) 
     at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) 
     at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) 
     at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) 
    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
     at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) 
     at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) 
     at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) 
     at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) 
     at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) 
     at sun.security.validator.Validator.validate(Validator.java:260) 
     at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324) 
     at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) 
     at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) 
     at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) 
    DEBUG: JavaMail version 1.5.2 
    DEBUG: successfully loaded resource: /META-INF/javamail.default.providers 
    DEBUG: Tables of loaded providers 
    DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]} 
    DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]} 
    DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map 
    [debug] application - DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle] 
    [debug] application - 

    [debug] application - DEBUG SMTP: need username and password for authentication 
    [debug] application - 

    [debug] application - DEBUG SMTP: useEhlo true, useAuth true 
    [debug] application - 

[debug] application - DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false 
[debug] application - 

[error] application - 

Я тестирую сервер на своем компьютере, может ли это вызвать эту проблему Эм?

+0

Вы должны это отладки [отладки] приложения - DEBUG SMTP: пытается подключиться к хосту "smtp.gmail.com", порт 465 , isSSL false, вы можете попробовать установить ssl true непосредственно в код –

+0

Вы нашли решение по вашей проблеме? – Seeker

ответ

0

Возможно, у вас есть опечатка. Вам нужно вместо TLS ТТЛ

На странице GitHub:

play.mailer { 
    host (mandatory) 
    port (defaults to 25) 
    ssl (defaults to no) 
    tls (defaults to no) 
    user (optional) 
    password (optional) 
    debug (defaults to no, to take effect you also need to set the log level to "DEBUG" for the application logger) 
    timeout (defaults to 60s in milliseconds) 
    connectiontimeout (defaults to 60s in milliseconds) 
    mock (defaults to no, will only log all the email properties instead of sending an email) 
}