2014-12-06 12 views
7

Tworzę aplikację w play 2.2.1 i próbuję dodać do niej obiekt poczty elektronicznej. Do tego dodałem zależność w moim pliku build.sbt file.But coraz wyjątek opisany poniżejcom.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Musi wydać komendę STARTTLS najpierw

mojego kodu

 String smtpHost = Play.application().configuration().getString("smtp.host"); 
     Integer smtpPort = Play.application().configuration().getInt("smtp.port"); 
     String smtpUser = Play.application().configuration().getString("smtp.user"); 
     String smtpPassword = Play.application().configuration().getString("smtp.password"); 

     Email mail = new SimpleEmail(); 
     try { 
      mail.setFrom("[email protected]"); 
      mail.setSubject("hi"); 
      mail.setMsg("This is the message"); 
      mail.addTo("[email protected]"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 



     mail.setHostName(smtpHost); 
     if (smtpPort != null && smtpPort > 1 && smtpPort < 65536) { 
      mail.setSmtpPort(smtpPort); 

     } 
     if (!smtpUser.isEmpty()) { 
      mail.setAuthentication(smtpUser, smtpPassword); 
     } 


     try { 
      mail.send(); 
     } catch (Exception e) { 
      e.printStackTrace(); 

    } 

zawierały kod w application.conf

# Email Configuration 
smtp.host=smtp.gmail.com 
smtp.port=587 
smtp.ssl=yes 
smtp.user="[email protected]" 
smtp.password="123456" 
smtp.auth=true 
smtp.STARTTLS.enable=true 

Ale jestem coraz wyjątek

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 controllers.SendMail.registrationSuccessful(SendMail.java:53) 
    at controllers.JobseekerController.registerJobseeker(JobseekerController.java:62) 
    at Routes$$anonfun$routes$1$$anonfun$applyOrElse$11$$anonfun$apply$11.apply(routes_routing.scala:185) 
    at Routes$$anonfun$routes$1$$anonfun$applyOrElse$11$$anonfun$apply$11.apply(routes_routing.scala:185) 
    at play.core.Router$HandlerInvoker$$anon$7$$anon$2.invocation(Router.scala:183) 
    at play.core.Router$Routes$$anon$1.invocation(Router.scala:377) 
    at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:56) 
    at play.db.jpa.TransactionalAction$1.apply(TransactionalAction.java:20) 
    at play.db.jpa.TransactionalAction$1.apply(TransactionalAction.java:18) 
    at play.db.jpa.JPA.withTransactionAsync(JPA.java:177) 
    at play.db.jpa.TransactionalAction.call(TransactionalAction.java:15) 
    at play.core.j.JavaAction$$anon$3.apply(JavaAction.scala:91) 
    at play.core.j.JavaAction$$anon$3.apply(JavaAction.scala:90) 
    at play.core.j.FPromiseHelper$$anonfun$flatMap$1.apply(FPromiseHelper.scala:82) 
    at play.core.j.FPromiseHelper$$anonfun$flatMap$1.apply(FPromiseHelper.scala:82) 
    at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:278) 
    at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:274) 
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:29) 
    at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:37) 
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:42) 
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386) 
    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: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. cq6sm31661301pad.30 - gsmtp 

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057) 
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580) 
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097) 
    at javax.mail.Transport.send0(Transport.java:195) 
    at javax.mail.Transport.send(Transport.java:124) 
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1400) 
    ... 26 more 

Jak mogę rozwiązać ten problem?

Odpowiedz

4

Myślę, że musisz określić, że wysyłasz wiadomość e-mail TLS przed wysłaniem wiadomości e-mail.

mail.setTLS(true); 

Nie jestem w 100% pewny, ale myślę, że może rozwiązać problem.

także uzyskać więcej informacji można zwrócić się do tej instrukcji: https://commons.apache.org/proper/commons-email/userguide.html

+0

moja IDE mówi setTLS (logiczna) są amortyzowane – silentprogrammer

+0

tak jest Przestarzałe od 1.3, ale można użyć setStartTLSEnabled() zamiast. :) – asvni