VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#将MailMessage保存为本地eml文件续.Net+SmtpClient

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  在上一篇 MailMessage保存为eml文件(C#+SmtpClient)中,我们使用了反射(Reflection)的方式,调用System.Net.Mail的内部对象 MailWriter 实现了将 MailMessage 的内容保存为 eml 文件。

  通过上次的实现,主要是学习反射Reflection的使用思路,起到个抛砖引玉的作用吧,算是

  今天,偶尔看到了上次的代码,又重新发现了一个新大陆,使得保存eml文件的工作,变得异常简单了  ,先回到上次解析的地方:

C#将MailMessage保存为本地eml文件续(.Net+SmtpClient)

  图片看不清楚?请点击这里查看原图(大图)。

  上次的时候,我们对于上面的这张图片,过分强调了 MailWriter 这里,而忽略了其他的部分,下面我把上面这幅图,重现一下:

C#将MailMessage保存为本地eml文件续(.Net+SmtpClient)

  图片看不清楚?请点击这里查看原图(大图)。

  上次,我侧重于上面的 画 蓝色 横线的地方,这次,我们侧重于 我画 红线 和 标数字的地方,大家可以看到,上面的这个switch 过程,是对 SmtpClient.DeliveryMethod 进行的,与 MailMessage 毫无关系。

  而上面我画红圈的2个地方,都标记了 1 ,这两种情况下, 会分别执行到标记 2 和 3 地方,而 2 和 3 确实殊途同归,都进入了 Label_025D 这里,下面是 Label_025D 的内容:

C#将MailMessage保存为本地eml文件续(.Net+SmtpClient)

  上面的核心内容,就是画红线的那句,而那句,其实又回到了 MailMessage.Send

C#将MailMessage保存为本地eml文件续(.Net+SmtpClient)

C#将MailMessage保存为本地eml文件续(.Net+SmtpClient)

  上面的红线框标注的,只是 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("deltacat@microsoft.com");
msg.To.Add("zu14.cn@live.cn");
msg.Body = "welcome to www.zu14.cn";
smtp.Send(msg);

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

  好了,就写这些,希望对大家有帮助吧

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



相关教程