.NET Framework 早期版本 (1.x/2.0) 提供了 System.Web.Mail 命名空間,讓開發者無需深入了解 SMTP/POP3 協定細節,即可輕鬆發送郵件。雖然現代專案建議使用 System.Net.Mail (功能更完整、支援 SSL/TLS),但理解舊版 API 有助於維護既有系統。本文示範基本發送流程與關鍵屬性設定。
MailMessageusing System;
using System.Web.Mail;
public class MailSender
{
public static void SendTestMail()
{
// 1. 建立郵件物件
MailMessage msg = new MailMessage();
// 2. 設定基本屬性
msg.From = "sender@example.com";
msg.To = "recipient@example.com";
msg.Cc = "cc@example.com"; // 副本
msg.Bcc = "bcc@example.com"; // 密件副本
msg.Subject = "測試郵件 - C# System.Web.Mail";
msg.Body = "這是一封使用 System.Web.Mail 發送的測試郵件。";
// 3. 設定格式與優先權
msg.BodyFormat = MailFormat.Text; // 或 MailFormat.Html
msg.Priority = MailPriority.Normal; // Low / Normal / High
// 4. 指定 SMTP 伺服器 (若未設定,嘗試使用本機 IIS SMTP 服務)
SmtpMail.SmtpServer = "mail.yourdomain.com"; // 格式:smtp.gmail.com:587
try
{
// 5. 發送郵件
SmtpMail.Send(msg);
Console.WriteLine("郵件發送成功!");
}
catch (Exception ex)
{
Console.WriteLine($"發送失敗:{ex.Message}");
// 實務上應記錄完整堆疊追蹤
}
}
}
| 屬性 | 說明 | 範例值 |
|---|---|---|
| From | 寄件者信箱 | "me@domain.com" |
| To | 收件者,多筆以分號分隔 | "a@x.com;b@y.com" |
| Cc / Bcc | 副本 / 密件副本 | "cc@domain.com" |
| Subject | 郵件主旨 | "系統通知" |
| Body | 郵件內容 | 純文字或 HTML 字串 |
| BodyFormat | 內容格式 | MailFormat.Text / Html |
| Priority | 優先權 | MailPriority.High |
| Attachments | 附件集合 | msg.Attachments.Add(...) |
// HTML 格式
msg.BodyFormat = MailFormat.Html;
msg.Body = @"重要通知
請查收附件內容。
";
// 新增附件
MailAttachment attach = new MailAttachment(@"C:\Reports\monthly.pdf");
msg.Attachments.Add(attach);
// 也可從 Stream 新增 (適用動態產生檔案)
// MailAttachment attach = new MailAttachment(memoryStream, "report.pdf", MailEncoding.Base64);
telnet smtp.server.com 25BodyFormat = MailFormat.Html 時,HTML 標頭宣告 <meta charset="utf-8">msg.Charset = "utf-8" (部分版本支援)System.Web.Mail 自 .NET 2.0 起標記為過時,新專案請直接使用 System.Net.Mail:
SmtpClient.EnableSsl (Gmail/Outlook 必須)SendMailAsyncNetworkCredential)Attachment 類別)// 現代寫法範例
using (var client = new SmtpClient("smtp.gmail.com", 587))
{
client.EnableSsl = true;
client.Credentials = new NetworkCredential("user@gmail.com", "app-password");
client.Send(mailMessage); // MailMessage 在 System.Net.Mail 中
}
System.Web.Mail 雖然簡單易用,但功能受限且不再維護。理解其基本用法有助於維護舊專案,但所有新開發工作請採用 System.Net.Mail 或第三方庫 (MailKit、FluentEmail) 以獲得完整的現代郵件功能與安全性支援。