2014-04-14 59 views
1

我在電子郵件回覆中工作,但無法找到任何解決方案。我需要在電子郵件失敗或在Java中成功時獲得響應。 代碼 - >在java中的電子郵件回覆

Properties props = new Properties(); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.host", "smtp.gmail.com"); 
    props.put("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("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO, 
      InternetAddress.parse("[email protected]")); 
     message.setSubject("Testing Subject"); 
     message.setText("Dear Mail Crawler," 
      + "\n\n No spam to my email, please!"); 

     Transport.send(message); 
+0

This [問題](http://stackoverflow.com/questions/14151463/how-to-check-if-the-mail-is-未發送使用java代碼)可能會幫助你。 –

回答

1

電子郵件是火和忘記,這意味着一旦你把它,有沒有辦法讓一個異常出它一旦失敗或某些返回代碼/值應該成功。

據我所知:

  • 要檢查電子郵件失敗,請檢查您的收件箱,看看你得到任何發送失敗的通知
  • 要檢查的電子郵件已交付並閱讀,您可以附加一個圖像,通過您有權訪問的服務器上的鏈接傳送。圖片的網址可能是這樣的:<img src="..../image/someuniqueid"...。然後,您可以將圖像ID分配給收件人。當他們打開電子郵件時,您的服務器將與您在電子郵件中提供的唯一ID一起被擊中。這會讓你知道什麼時候打開了一封電子郵件,以及收件人是誰。
+0

現代電子郵件客戶端不會自動打開外部鏈接或圖像。事實上,他們傾向於認爲這種電子郵件是垃圾郵件。 –

+0

當然你可以檢查電子郵件是否被髮送.... – MaVRoSCy

0

如果拋出一個異常,你可以捕捉它在你的異常hanlding:

try{ 
.... 
    Transport.send(message); 
.... 

}catch(Exception ex){ 
    //You can catch exception here and deal with it 
} 

一些流行的異常類型包括:

  • javax.mail.SendFailedException:無效地址;嵌套異常是:javax.mail.SendFailedException:501:收件人地址必須包含域
  • 無法連接到SMTP主機:yourdomain.com,端口:25;嵌套的異常是:java.net.ConnectException:連接到yourdomain.com超時
  • 無法連接到SMTP主機:yourdomain.com,端口:25;嵌套的異常是:java.net.ConnectException:連接被拒絕:連接