2017-10-05 97 views
0

我正在使用Javamail連接到AWS電子郵件服務;我測試過,我可以使用此代碼接收電子郵件,但我也想獲得有關已發送電子郵件的數據的響應,例如AWS用來唯一標識消息的消息ID。如何使用Javamail獲得SMTP響應

我使用的MimeMessage創建一個電子郵件,我這個代碼try catch塊內發送它:

transport.sendMessage(message, message.getAllRecipients) 

此代碼只是觸發了一封電子郵件到AWS服務器,我不能獲取任何元數據。有沒有一種方法來偵聽回覆,看看郵件是否成功,以便我可以檢索郵件ID?

+0

這不是SMTP規範的一部分,因此不 - 服務器不會將該信息發送給發送器。 –

+0

確實。您是否使用此郵件進行了檢查?元數據是否已返回給發件人?普通的SMTP不是很詳細,但據我所知,亞馬遜可能有一些擴展。如果是這樣,SMTP協議非常簡單,只需使用Java套接字發送消息就不是非常困難。 JavaMail定義了一個'TransportListener',但我懷疑它會捕獲SMTP中不是通用東西的數據。 –

+0

是發送的電子郵件包含我需要的元數據。謝謝大家,我會考慮使用AWS提供的API電子郵件替代方案。 – DarthBinks911

回答

0

如果sendMessage方法返回,服務器接受該消息。請注意,that doesn't necessarily mean it will be delivered to the recipient,但是。但是到那時您可以使用getMessageID方法來檢索消息ID。

如果send方法拋出異常,服務器由於某種原因拒絕接受消息,並且不會發送。

+0

這確實有效,但我查看了由AWS生成的消息ID,它不同。所以我需要找到一種方法來取代這個ID。不管怎麼說,還是要謝謝你。 – DarthBinks911

+0

您是否在談論收件人獲取郵件中的Message-ID標題?如果AWS在發送消息時重寫了Message-ID頭部,那麼我不知道如何獲取這些信息。如果它確實在SMTP響應代碼中包含該信息,則可以使用JavaMail監視SMTP響應。您可以發佈顯示帶有Message-ID的SMTP響應的[JavaMail調試輸出](https://javaee.github.io/javamail/FAQ#debug)嗎? –