原文:http://blog.joycode.com/dotey/archive/2005/01/15/43113.aspx
Asp.Net Forums之郵件發送
Forums中很多地方要用到郵件發送,如:郵件註冊、找回密碼、郵件訂閱等。
添加新貼的代碼流程非常慢。每次添加文章,應用程式首先要確保沒有重複貼,然後格式化文章內容和表情映像,記號並索引,如果必要還要將文章添加到相應的隊列中,對附件進行有效性檢查,最終完成發貼後,給預訂者發出 e-mail 通知。顯然,這裡做的工作太多。索引文章是一個很耗時的操作,此外,內建的 System.Web.Mail 功能要與 SMTP 伺服器串連並順序發送郵件。當特定文章或主題預定者數量增加時,發送文章的執行時間會越來越長。
並不是每個請求都需要索引郵件,所以Forums採用的是批量集中處理,並且一次只索引25個文章或每隔五分鐘發送一次郵件。定時器這部分在我的上一個blog有說明《asp.net forums中定時器的應用》
在Asp.Net中郵件發送非常容易,一般都需要Smtp伺服器,但是一些免費信箱的Smtp伺服器(如smtp.163.com)都需要帳號密碼驗證。在MailMessage對象的Filds集合中加入以下內容即可:
Message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1" );
//basic authentication
Message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", txtUserName.Text );
// 設定smtp伺服器登入帳號(如您163.com的信箱帳號)
Message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", txtPassword.Text );
// 設定smtp伺服器登入密碼 (如您的163.com的信箱帳號密碼)
但是使用免費的Smtp伺服器一定要注意一個問題,就是發送郵件的帳號(即Message.From)必須和上面的Smtp伺服器登入帳號一致,否則將會導致找不到cdo對象的異常。
範例程式碼:
郵件發送範例程式碼