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

.NET 發送電子郵件完整指南:從舊版 CDOSYS 到 System.Net.Mail

     編輯:關於.NET

背景:郵件驗證流程

用戶註冊 → 格式驗證 → 發送激活郵件 → 用戶點擊鏈接 → 帳號啟用。確保郵箱真實有效且屬於用戶本人。

方式一:.NET 1.0/1.1 — System.Web.Mail (CDOSYS)

已棄用,僅供維護舊專案參考。

using System.Web.Mail;

public void Send(string to, string from, string subject, string body, string username, string password, string smtpHost)
{
    MailMessage mail = new MailMessage();
    mail.To = to;
    mail.From = from;
    mail.Subject = subject;
    mail.BodyFormat = MailFormat.Html;
    mail.Body = body;
    // CDOSYS 組態欄位
    mail.Fields.Add("https://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
    mail.Fields.Add("https://schemas.microsoft.com/cdo/configuration/sendusername", username); // 僅 @ 前部分
    mail.Fields.Add("https://schemas.microsoft.com/cdo/configuration/sendpassword", password);
    SmtpMail.SmtpServer = smtpHost;
    SmtpMail.Send(mail);
}

核心類別:System.Web.Mail.SmtpMail、MailMessage,底層仰賴 CDOSYS COM 組件。

方式二:.NET 2.0+ — System.Net.Mail (推薦)

全新托管實現,無 COM 依賴。

using System.Net.Mail;
using System.Net;

public void Send(string to, string from, string subject, string body, string userName, string password, string smtpHost)
{
    var fromAddr = new MailAddress(from);
    var toAddr = new MailAddress(to);
    var message = new MailMessage(fromAddr, toAddr);
    message.Subject = subject;
    message.IsBodyHtml = true;
    message.Body = body;
    var client = new SmtpClient(smtpHost);
    client.Credentials = new NetworkCredential(userName, password); // 僅 @ 前部分
    client.Send(message);
}

核心類別:System.Net.Mail.MailMessage、SmtpClient、System.Net.NetworkCredential。

關鍵注意事項

  • 驗證帳號:無論新舊版本,username 均為郵箱 @ 符號前部分(如 zhou@163.com → zhou)
  • MailMessage 重構:新版採用 MailAddress 封裝地址,支援顯示名稱、編碼等豐富功能
  • SmtpClient 支援 SSL、非同步發送、大附件流式處理等進階特性
  • 異常處理:發送失敗會拋出 SmtpException,需捕獲記錄

遷移建議

所有新專案強制使用 System.Net.Mail。舊專案應規劃遷移,CDOSYS 組件在新版 Windows/IIS 上可能不可用或有安全風險。

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