簡體   English   中英

從java代碼發送郵件 - 可靠的方式

[英]Sending mail from java code - the reliable way

從您的應用程序發送郵件是非常常見的事情,在大多數情況下,這是一個真正的痛苦......你知道在哪里。

所以我正在做的是采用Apache Commons Email(基於“官方”java郵件api的頂部)並且我以最簡單的方式發送電子郵件,即沒有對smtp服務器進行身份驗證。 我只是在目標主機名上進行簡單的MX查找,獲取MX服務器並嘗試在第一個上刪除我的消息(郵件是否被拒絕是一個完全不同的問題,我可能很快會問一個關於完全搞亂了return-path:vs. from:vs. reply-to:以及這些頭文件在(不)在java中處理的方式)。 回到商業...所以我只是試圖在郵件服務器上刪除我的消息,並且優先級最低。

這是一個例子:我想寫信給recipient@domain.com MX Lookup告訴我domain.com知道兩個MX服務器,例如mail1.domain.com ,優先級為10, mail2.domain.com優先級為20. rfc做事情的方法是去服務器最不喜歡並將郵件丟棄。 這就是我的工作。

最后我的問題:如果該服務器不能以某種方式提供,會發生什么? 這很簡單 - 我去其他服務器,但Apache Commons(我懷疑java mail api)不允許我這樣做。 mail.smtp.host變量植根於電子郵件中消息中會話的props。 我無法得到它。

那么處理這個問題的最佳方法是什么? 我應該使用新的主機名(mail2)從頂部完全構建我的電子郵件,還是有一些聰明的方法可以讓這一切在java中完成而不會有太多痛苦?

如果您正在嘗試實現部分郵件服務器,而不僅僅是發送電子郵件,這聽起來就是這樣。 路由,中繼,緩存和傳遞重試是由所有郵件服務器實現和提供的操作,通常不由郵件客戶端完成。

您應該做的是使用(一個!)現有郵件服務器,為您配置允許中繼出站郵件,或者如果您無法訪問此類服務器(我懷疑),請設置並運行您自己的服務器。 然后,您可以在mail.smtp.host配置服務器,並忘記所有關於DNS查找,服務器優先級以及如果沒有任何MX服務器可以訪問該怎么做的擔心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM