2014-02-13 28 views
0

我想通過我使用實時域設置的自定義域發送電子郵件:https://domains.live.com。該電子郵件本身的作品,我可以用我的自定義域用戶名和密碼登錄outlook.com併發送和接收郵件。我所試圖做的是通過Java發送電子郵件和JMail的,這裏是我的代碼(從這裏:http://www.oracle.com/technetwork/java/javamail/faq-135477.html#outlook):使用jmail java發送來自自定義Live domian outlook com的電子郵件

public static void sendEmail() throws MessagingException{ 
    System.out.println("Sending email!"); 

    String host = "smtp.live.com"; // using this or smtp-mail.outlook.com has the same outcome. 
    String username = "username"; 
    String password = "password"; 

    Properties props = new Properties(); 
    props.put("mail.smtp.starttls.enable", "true"); 

    Session session = Session.getInstance(props); 
    MimeMessage msg = new MimeMessage(session); 
    msg.setSubject("Test Subject"); 
    msg.setFrom(new InternetAddress("fromemail")); 
    msg.addRecipient(Message.RecipientType.TO, new InternetAddress("toemail")); 

    Transport t = session.getTransport("smtp"); 

    try { 
     t.connect(host, username, password); 
     t.sendMessage(msg, msg.getAllRecipients()); 
    } finally { 
     t.close(); 
    } 
} 

我在我的用戶名和密碼替代,我得到以下信息:

Sending email! 
javax.mail.MessagingException: Exception reading response; 


nested exception is: 
    java.net.SocketException: Connection reset 
    at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2210) 
    at com.sun.mail.smtp.SMTPTransport.close(SMTPTransport.java:1222) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) 
    at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) 
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) 
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.net.SocketException: Connection reset 
    at java.net.SocketInputStream.read(Unknown Source) 
    at java.net.SocketInputStream.read(Unknown Source) 
    at sun.security.ssl.InputRecord.readFully(Unknown Source) 
    at sun.security.ssl.InputRecord.read(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source) 
    at sun.security.ssl.AppInputStream.read(Unknown Source) 
    at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:110) 
    at java.io.BufferedInputStream.fill(Unknown Source) 
    at java.io.BufferedInputStream.read(Unknown Source) 
    at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:89) 
    at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2188) 
    ... 36 more 

注意:發件人電子郵件與我的用戶名相同!

我錯過了什麼?謝謝!

編輯:我改變了我的道具:

Properties props = new Properties(); 
props.put("mail.smtp.auth", "true"); // If you need to authenticate 
props.put("mail.smtp.host", host); 
props.put("mail.smtp.port", "587"); 
props.put("mail.smtp.starttls.enable", "true"); 

同樣的錯誤仍然呈現..

編輯:我固定它。我打開使用session.setDebug(true)調試,可以看到我沒有電子郵件正文。所以我添加了msg.setText(「Content」),它一切正常!

回答

0

smtp.live.com不偵聽端口25,這是默認端口。看來他們需要TLS,所以你也必須在javamail中這樣做。默認的TLS端口是587,我已經確認您嘗試連接的服務器在該端口上偵聽。本文將告訴您如何設置端口:

Using JavaMail with TLS

+0

我已經更新我的道具,你可以檢查編輯?同樣的錯誤仍在發生。 – user1625233

相關問題