首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 發送電子郵件常見問題與解決方案

     編輯:關於ASP.NET

新發行的 ASP.NET 2.0 中,微軟不再建議使用 System.Web.Mail 命名空間,改以新的 System.Net.Mail 命名空間取代。新函式庫引入許多新特性,但在發送郵件方式上也帶入一些小錯誤。

一、發送郵件基本範例

討論錯誤前,先看示例程式碼(假設檔案開頭已加入 "using System.Net.Mail"):

MailMessage msg = new MailMessage();
msg.From = new MailAddress("address@domain.com", "Person's Name");
msg.To.Add(new MailAddress("destination@domain.com", "Addressee's Name");
msg.To.Add(new MailAddress("destination2@domain.com", "Addressee 2's Name");
msg.Subject = "Message Subject";
msg.Body = "Mail body content";
msg.IsBodyHtml = true;
msg.Priority = MailPriority.High;
SmtpClient c = new SmtpClient("mailserver.domain.com");
c.Send(msg);

上述程式碼與舊版實現差異不大,僅在指定訊息時做些小改動。無需自行建構地址,讓系統代勞。若指定電子郵件地址與名稱,系統會自動在訊息中顯示如下格式:

"Person's Name" <destination@domain.com>

這正是電子郵件地址的「正確」格式。當然,可進一步將多個地址加入 To、CC 和 BCC 集合,方式相同。透過此程式設計方式實現大量郵件發送,比逐個發送容易得多——只需將多個地址加入 BCC 屬性即可實現群發。

二、存在的問題

分析其中的小錯誤。

如前所述,新命名空間帶有一些小錯誤。第一個是:發送郵件時,郵件標頭資訊全部以小寫字母形式加入。然而,依據 SMTP 郵件 RFC 規範未指定郵件標頭應如何大寫;但許多垃圾郵件過濾程式限制標頭未正確大寫的郵件訊息。

另一個錯誤與優先權設定有關——透過優先權設定,用戶可指定訊息在郵件用戶端的重要程度。因郵件標頭格式化方式(全轉小寫),導致我的郵件程式 (Eudora) 無法識別相應優先權標誌,因而不會特別標記此郵件重要程度。雖看似瑣碎,但轉換到新版 System.Web.Mail 後似無明顯理由。

因此,我將持續探討此問題,若實在找不到好補救辦法,只能回到舊版 System.Web.Mail 以更有效解決上述警告問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved