因爲看不出區別 (說明都一模一樣),所以我就開了 Reflector 去解了 System.dll 中的 System.Net.Mail.SmtpClient 中的 Send() 方法,發現它會檢查 From 屬性是否存在,而我程序設置了 Sender,所以纔會一直報錯,後來我將Sender 設置爲From 就解決問題了,不過我還是很好奇這兩個有什麼差別,所以做了一下實驗,發現:
當 Sender 和 From 之間若有無效 Email Address (或兩者都是無效 Email Address)時,Mail Server會自動以登錄賬戶 Email Address 爲主。
當 Sender 和 From 使用的名稱不同時,SmtpClient會取用From 的名稱。
簡單的說,當 Sender 與 From 都有設置時,Mail Server 會取用 Sender 的設置發送,但郵件上的名稱會使用 From 的設置,而若不需要 Sender 和 From 同時設置時,則 Sender 可以免設置,但 From 一定要設置。