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

C# 將 MailMessage 存為 EML 文件(二):SmtpClient Pickup 目錄法

     編輯:關於C語言

繼上篇反射方案,發現 `SmtpClient` 內建 `SpecifiedPickupDirectory` 模式可直接生成 EML 文件,無需反射,極度簡單。

核心原理

`SmtpClient.DeliveryMethod` 為 `SpecifiedPickupDirectory` 時,`Send` 會在指定目錄生成 EML 文件,完全無網絡交互。IL 反編譯證實內部調用 `MailWriter` 寫入流,流向同反射方案。

實戰代碼

SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = false; // 必須關閉
smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
smtp.PickupDirectoryLocation = @"d:\mail\";

MailMessage msg = new MailMessage();
msg.Subject = "Hello";
msg.From = new MailAddress("me@example.com");
msg.To.Add("you@example.com");
msg.Body = "Body content";

smtp.Send(msg); // 直接在 d:\mail\ 生成 {GUID}.eml

優缺點

  • ✅ 無需 SMTP 服務器配置,極簡部署
  • ✅ 代碼極少,維護成本低
  • ❌ 文件名為 GUID,不可自定義
  • ❌ 單目錄文件過多可能影響文件系統性能

適用場景

  • 單元測試驗證郵件內容
  • 離線郵件生成、歸檔
  • 開發環境無 SMTP 服務器時的替代方案
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved