MailMessage的Sender和From區別

在使用 MailMessage 和 SmtpClient 寫程序,按照平常的寫法,Compile 沒有問題,但發信時卻出現了 "必須指定來源地址" ,但原程序和以前沒什區別,後來我去查了一下 MSDN Library,發現了兩個很模棱兩可的屬性說明:

因爲看不出區別 (說明都一模一樣),所以我就開了 Reflector 去解了 System.dll 中的 System.Net.Mail.SmtpClient 中的 Send() 方法,發現它會檢查 From 屬性是否存在,而我程序設置了 Sender,所以纔會一直報錯,後來我將Sender 設置爲From 就解決問題了,不過我還是很好奇這兩個有什麼差別,所以做了一下實驗,發現:


當 Sender 和 From 有同時指定,SmtpClient 會以 Sender爲主。
當 Sender 和 From 之間若有無效 Email Address (或兩者都是無效 Email Address)時,Mail Server會自動以登錄賬戶 Email Address 爲主。
當 Sender 和 From 使用的名稱不同時,SmtpClient會取用From 的名稱。

簡單的說,當 Sender 與 From 都有設置時,Mail Server 會取用 Sender 的設置發送,但郵件上的名稱會使用 From 的設置,而若不需要 Sender 和 From 同時設置時,則 Sender 可以免設置,但 From 一定要設置。


PS: 我使用的是 Gmail,若是其他郵件系統可能會有不同的行爲。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章