2016-04-25 24 views
1

經過幾個小時的MAIL研究(其中有許多問題),我最終自己問了這個問題,因爲我找不到完全的答案回答我的。如果沒有給出FROM地址,則獲取'默認'FROM地址。NET.Mail

對於我的一個應用程序,我正在構建一個郵件類庫,其中包含通過SMTP處理傳出郵件的System.Net.Mail。 FROM地址是一個可選參數,如果沒有給出,那麼代碼應該設置/處理FROM地址。

由於不是所有的郵件客戶端都是相同的,我想構建一些東西來獲得正確的FROM地址。

經過一番研究,我發現我可以使用UserPrincipal.Current.EmailAddress來實現這一點,但我發現EmailAddress值並不總是存在於Active Directory中。

問題是,有沒有辦法總是得到的FROM地址或這是可撤銷的?或者我應該將它限制在像outlook和Gmail這樣的最常用的郵件客戶端上?

+0

實際上,你不能說出什麼是「正確」的電子郵件地址,例如,你可以掃描我的筆記本電腦所有你喜歡的,我沒有運行任何電子郵件應用程序。但我有很多電子郵件地址,而且我會選擇一個,但只有我知道那是哪個。當使用本地交換服務器時,AD查找功能往往效果最好,但情況並非總是如此。 – BugFinder

回答

2

大多數爲生產使用而設置的SMTP服務器不允許「欺騙」。換句話說,它們要求FROM地址是用於登錄到SMTP的地址。雖然SMTP規範中沒有任何內容需要這種做法,但垃圾郵件發送者的存在確實如此。

如果未明確設置,則可以從ActiveDirectory獲取電子郵件地址。 ActiveDirectory在域中設置,因此電子郵件地址將是userId + '@' + activeDirectoryDomain。這成爲一個問題的地方是,如果您使用來自第三方的基於聲明的身份驗證,並且第三方不填充電子郵件聲明。例如,Facebook和谷歌認證提供了一個電子郵件地址,而Twitter認證則沒有。

在任何情況下,都應該有系統默認的電子郵件地址。您必須與管理SMTP服務的人協調,但他們可以爲僅傳出電子郵件設置「無回覆」電子郵件地址。如果你不能以其他方式推導出來,那將是你的最後選擇。

+0

很好的解釋!使它更清晰。我可能會讓FROM地址不可選。謝謝。 – Nicolas