程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#將MailMessage保存為本地eml文件續(.Net+SmtpClient)

C#將MailMessage保存為本地eml文件續(.Net+SmtpClient)

編輯:關於C#

在上一篇 MailMessage保存為eml文件(C#+SmtpClient)中,我們使用了反射(Reflection)的方式,調用System.Net.Mail的內部對象 MailWriter 實現了將 MailMessage 的內容保存為 eml 文件。

通過上次的實現,主要是學習反射Reflection的使用思路,起到個拋磚引玉的作用吧,算是

今天,偶爾看到了上次的代碼,又重新發現了一個新大陸,使得保存eml文件的工作,變得異常簡單了 ,先回到上次解析的地方:

上次的時候,我們對於上面的這張圖片,過分強調了 MailWriter 這裡,而忽略了其他的部分,下面我把上面這幅圖,重現一下:

上次,我側重於上面的 畫 藍色 橫線的地方,這次,我們側重於 我畫 紅線 和 標數字的地方,大家可以看到,上面的這個switch 過程, 是對 SmtpClient.DeliveryMethod 進行的,與 MailMessage 毫無關系。

而上面我畫紅圈的2個地方,都標記了 1 ,這兩種情況下, 會分別執行到標記 2 和 3 地方,而 2 和 3 確實殊途同歸,都進入了 Label_025D 這裡,下面是 Label_025D 的內容:

上面的核心內容,就是畫紅線的那句,而那句,其實又回到了 MailMessage.Send

上面的紅線框標注的,只是 writer 進行了一些寫入操作,沒有任何的網絡交互,而 writer 就是我們上次說的那個生成EML 文件的 stream。

說到這裡,其實問題就清了,.NET 的 SmtpClient 對於 DeliveryMethod 為 SpecifiedPickupDirectory 和 PickupDirectoryFromIis 的 情況,所做的只是 在特定的目錄下,生成一個EML文件,而已。

對於 PickupDirectoryFromIis 的情況,需要IIS支持,不是我們要的,我們需要的,是 SpecifiedPickupDirectory 這個。對於這種情況 再簡單不過了,實例代碼如下:

SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = false; //必須為 false
smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
smtp.PickupDirectoryLocation = @"d:\mail\"; //自定義目錄
MailMessage msg = new MailMessage();
msg.Subject = "hello, i am deltacat";
msg.From = new MailAddress("[email protected]");
msg.To.Add("[email protected]");
msg.Body = "welcome to www.zu14.cn";
smtp.Send(msg);

上面的方式,根本不需要配置 smtp 服務器等等的,很是方便;缺點是生成的EML文件名,是一個GUID,不能自己控制。

好了,就寫這些,希望對大家有幫助吧

出處:http://www.cnblogs.com/sjcatsoft/archive/2009/05/17/1458997.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved