[.NET]使用 MailMessage 來寄信時,如何讓Mail顯示寄件者名稱

透過MailMessage來寄送Email時,為何只顯示寄件者的Email Address,而不會顯示寄件者的名稱呢?

今天同事問一個透過MailMessage來寄送Email時,為何只顯示寄件者的Email Address,而不會顯示寄件者的名稱呢?

image

 

看一下原本程式的寫法,原來程式中直接建立MailAddress(vstrFrom),而vstrFrom又直接給寄件者的Email Address,所以當然就只顯示寄件者的Email Address啦!

程式類似如下,


MailMessage message = new MailMessage(
   @"rainmaker@rmtech.com",
   "rainmaker@rmtech.com",
   "測試顯示寄件者名稱",
   @"使用 寄件者名稱 <寄件者Email> 來讓Mail可顯示寄件者的名稱");
 
SmtpClient client = new SmtpClient("mail.rmtech.com");
// Add credentials if the SMTP server requires them.
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Send(message);

 

後來,查到MSDN上 MailAddress 建構函式 (String) 的說明如下,

如果您將地址括在角括弧中,address 參數就可包含顯示名稱及關聯的電子郵件地址。 例如:
"Tom Smith <tsmith@contoso.com>"
顯示名稱和角括弧之間允許有泛空白字元 (White Space)。

 

所以就請同事將原本只記錄寄件者的Email Address的欄位資料,在前面多加入 顯示名稱 及用<>去包Email Address,就可以順利顯示寄件者的名稱了,如下,


MailMessage message = new MailMessage(
   @"亂馬客 <rainmaker@rmtech.com>",
   "rainmaker@rmtech.com",
   "測試顯示寄件者名稱",
   @"使用 寄件者名稱 <寄件者Email> 來讓Mail可顯示寄件者的名稱");
 
SmtpClient client = new SmtpClient("mail.rmtech.com");
// Add credentials if the SMTP server requires them.
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Send(message);

image

 

參考資料

MailAddress 建構函式 (String)

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^