2014-02-25 20 views
0

我想使用Apache Commons Email通過live.com SMTP發送電子郵件。發送HtmlEmail到live.com不合格

HtmlEmail email = new HtmlEmail(); 

email.setStartTLSRequired(true); // ??? 
email.setStartTLSEnabled(true); //??? 
email.setHostName("smtp.live.com"); 
email.setSmtpPort(587); 
email.setSslSmtpPort("587"); 
email.setAuthenticator(new DefaultAuthenticator("username", "password")); 
email.setSSLOnConnect(true); 

email.setSubject("subject"); 
email.setTo("[email protected]"); 
email.setFrom("[email protected]"); 
email.setHtmlMsg("body"); 

此代碼失敗:

org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.live.com:587 
     at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1398) 
     at org.apache.commons.mail.Email.send(Email.java:1423) 
     at models.helpers.EmailHelper.sendEmail(EmailHelper.java:70) 
     at models.helpers.EmailHelper.sendEmail(EmailHelper.java:58) 
     at models.entities.Reservation.confirm(Reservation.java:83) 
     at models.entities.ReservationTest$1.run(ReservationTest.java:20) 
     at play.test.Helpers.running(Helpers.java:367) 
     at models.entities.ReservationTest.testConfirm(ReservationTest.java:16) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
     at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
     at org.junit.runner.JUnitCore.run(JUnitCore.java:157) 
     at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:77) 
     at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195) 
     at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
    Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.live.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:1388) 
     ... 33 more 
    Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
     at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:541) 
     at sun.security.ssl.InputRecord.read(InputRecord.java:374) 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893) 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1294) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1321) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1305) 
     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) 
     ... 40 more 

回答