title: Play framework 2.5 sending email
body: <p>I'm trying to send email from my play app. I am using <a href="https://github.com/playframework/play-mailer" rel="nofollow noreferrer">play-mailer plugin</a>
  I've done all instructions, but still can't connect to gmail</p>
  
  <p>application.conf</p>
  
  <pre><code>  play.mailer {
  
    debug = true
    host = smtp.gmail.com
    port = 465
    ssl = true
    ttl = false
    user = "to******f@gmail.com"
    password = "T****in"
  }
  </code></pre>
  
  <p>sending task</p>
  
  <pre><code>public static void sendSignUpMsg(MailerClient mailerClient, String verificationLink) {
  
  Email email = new Email()
          .setSubject("Simple email")
          .setFrom("t***f@gmail.com")
          .addTo("d****i@gmail.com")
          .setBodyText("A text message");
  mailerClient.send(email);
  }
  </code></pre>
  
  <p>so i've got exception</p>
  
  <pre><code>     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 - 
  </code></pre>
  
  <p>i am testing server on my pc, may it cause this problem?</p>