而上面我畫紅圈的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,不能自己控制。
好了,就寫這些,希望對大家有幫助吧