2012-07-05 66 views
0

工作,我想寫一個簡單的Java程序,從使用JavaMail API我的Hotmail帳戶發送電子郵件。這裏是我的代碼:Hotmail的SMTP沒有用JavaMail

import java.util.Properties; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 


public class HotMailSend { 
public static void main(String args[]) 
{ 
    final String username = HOTMAIL.username; 
    final String password = HOTMAIL.password; 

    Properties props = new Properties(); 
    props.setProperty("mail.smtp.auth", "true"); 
    props.setProperty("mail.smtp.starttls.enable", "true"); 
    props.setProperty("mail.smtp.host", "smtp.live.com"); 
    props.setProperty("mail.smtp.port", "587"); 

    Session session = Session.getInstance(props, 
     new javax.mail.Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(username, password); 
     } 
     }); 

    try { 

     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress(HOTMAIL.username)); 
     message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(GMAIL.username)); 
     message.setSubject("Testing Subject"); 
     message.setText("Hey Buddy..!!!," 
      + "\n\n No spam to my email, please!"); 

     Transport.send(message); 

     System.out.println("Done"); 

    } catch (MessagingException e) { 
     throw new RuntimeException(e); 
    } 
} 

}

這裏是我得到的錯誤:在線程

異常 「主」 了java.lang.RuntimeException:javax.mail.MessagingException的:無法向SMTP主機發送命令; 嵌套異常是: java.net.SocketException異常:連接在HotMailSend.main(HotMailSend.java:45) 通過遠程主機 關閉所致:javax.mail.MessagingException的:不能發送命令到SMTP主機; 嵌套的異常是: java.net.SocketException:遠程主機關閉的連接 at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:2163) at com.sun.mail.smtp.SMTPTransport.sendCommand (SMTPTransport.java:2150) at com.sun.mail.smtp.SMTPTransport.close(SMTPTransport.java:1220) at javax.mail.Transport.send0(Transport.java:197) at javax.mail.Transport .send(Transport.java:124) at HotMailSend.main(HotMailSend.java:40) 導致:java.net.SocketException:連接由遠程主機 在com.sun.net.ssl.internal.ssl關閉。 SSLSocketImpl.checkWrite(SSLSocketImpl.java:1307) 在com.sun.net.ssl.internal.ssl.AppOutputStream.write(AP在java.io.BufferedOutputStream上的java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 上的com.sun.mail.util.TraceOutputStream.write(TraceOutputStream.java:114) (pOutputStream.java:43) 。沖洗(BufferedOutputStream.java:123) 在com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:2161) ... 5個

+0

我也有過這個問題。我放棄了試圖找到解決方案,但我的猜測是,由於安全原因,hotmail不允許這種連接 – 2012-07-05 15:16:46

+0

@AdelBoutros - 我再次嘗試相同的代碼!它工作沒有任何問題...然後我不能相信它實際上發生了,所以我再次運行它...並再次得到同樣的錯誤...現在對這個奇怪現象的任何意見?? 作爲一個證明它的工作我主要在我的Gmail郵箱! – yashdosi 2012-07-05 15:20:27

+0

可能您有一個防火牆或防病毒產品攔截您的連接並導致此問題。 – 2012-07-05 17:06:05

回答

1

我以前用過的SMTP/JAVAMAIL使用Hotmail ,所以它絕對有效。你是否在短時間內發送了很多電子郵件? (我認爲他們可能會阻止您的郵件或將其發送到垃圾郵件文件夾,當你做,因爲垃圾郵件防範措施。)

0

檢查您正在使用,如果它從微軟到了一些消息的電子郵件。

跟我發生這個問題,當我看着它,我有一個電子郵件說有以下主題:驗證您的帳戶Outlook.com做多。

他們讓我確認,我是一個真正的人,所以我可以繼續發送自動信息。他們給我發了一條消息給我的手機,我設法繼續用Java Mail發送電子郵件。