從你的應用程序發送郵件是很常見的事情,在大多數情況下,它是一個真正的痛苦......你知道在哪裏。從java代碼發送郵件 - 可靠的方式
所以我在做的是採用Apache Commons Email(它是基於「官方」java郵件API的頂部),並且我以最簡單的方式發送電子郵件,也就是說,沒有通過身份驗證smtp服務器。我只是對目標主機名進行簡單的MX查找,獲取MX服務器並嘗試在第一個郵件中放棄我的郵件(郵件被拒絕與否是完全不同的問題,我可能會很快提出有關整個搞砸了return-path:vs:from:vs. reply-to:以及這些頭文件在java中處理的方式)。回到企業......所以我只是試圖在郵件服務器上放棄我的郵件,並且得到最少的偏好分數。我想寫[email protected]
。 MX查找告訴我,domain.com
知道兩個MX服務器,例如mail1.domain.com
優先選擇10並且mail2.domain.com
優先選擇20. rfc做事情的方式是首先將服務器放在最不偏好的位置,然後將郵件放在那裏。所以我就是這麼做的。
最後我的問題:如果該服務器不能以某種方式或另一種方式可用會發生什麼?這很簡單 - 我去了另一臺服務器,但Apache Commons(和我懷疑java郵件API)不允許我這樣做。 mail.smtp.host
變量植根於電子郵件中的會話的道具中。我無法理解它。
那麼處理這個問題最好的辦法是什麼?我應該使用新的主機名(mail2)從頂部完全構建我的電子郵件嗎?還是有一些聰明的方法可以使這一切都在Java中工作,而沒有太多的痛苦?
是的,我考慮過使用'aspirin'甚至是'james',甚至是一個功能齊全的「外部」SMTP服務器(但在後一種情況下,每個客戶端都必須建立自己的smtp服務器,現在有很多方法可以從客戶那裏得到:)),但是解決這樣一個簡單問題似乎太過矯枉過正了。或者,也許只是我的「簡單」和「矯枉過正」的概念是傾斜的:) – ingenious
我不知道你的軟件應該運行在哪裏,或者你在談論哪種類型的客戶端,但是如果你的軟件需要發送外發郵件,恕我直言,沒有太多要求提供正在運行的SMTP服務器。公司有一個SMTP服務器在運行,哪個家庭用戶無法從互聯網訪問提供商或「純」郵件提供商(如GMail或Hotmail)訪問SMTP服務器? – jarnbjo
我同意,使用現有的電子郵件服務器。如果您仍然想自己做,可能需要直接使用JavaMail API,以便您可以使用Transport.connect方法直接連接到所需的任何服務器。 –