在上一篇 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("deltacat@microsoft.com");
msg.To.Add("zu14.cn@live.cn");
msg.Body = "welcome to www.zu14.cn";
smtp.Send(msg);
上面的方式,根本不需要配置 smtp 服务器等等的,很是方便;缺点是生成的EML文件名,是一个GUID,不能自己控制。
好了,就写这些,希望对大家有帮助吧
分享到:
相关推荐
C#使用MailMessage发送邮件 京华志&精华志出品 分享资源 C# ASP.NET SQL DBA 源码
C# 邮件发送类,MailMessage
编写Windows应用程序,使用StmpClient、MailMessage及Attachment类实现发送电子邮件 发送邮件附件; 实现邮件群发; 实现添加及删除联系人邮箱。
.net 发送邮件demo 框架3.5 使用System.Net.Mail 下的MailMessage,SmtpClient实现发送邮件的功能 有普通发送,SSL加密发送等方式 http://www.heycoder.com/noteinfo8.aspx
asp.net在线发邮件! /// /// 发送邮件using System.Net.Mail; /// /// 接收方邮件地址 /// 邮件标题 /// 邮件正文内容 /// <returns></returns> /// <author>xile /// <date>2010-01-01 static bool ...
将EML上载到System.Net.Mail.MailMessage的C#类
.net提供了强大的功能,其中就包括发送邮件上.经过仔细研究才发现用.net发送电子邮件是很简单的一件事情.现在我们就来看一下. 首先添加命名空间 Using System.Net.Mail 下面我们看发送邮件的代码部分:(注意:网易的...
利用MailMessage,MailAddress发送邮件
MailMessage 类:MailMessage类是.NET Framework中管理邮件的专用类,表示可以使用SmtpClient类发送的电子邮件。MailMessage 类的实例表示一个电子邮件的所有内容,并用SmtpClient类来传输到SMTP服务器。若要指定...
asp.net发送电子邮件例子: using System; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI....
C#使用MailMessage和SmtpClient发送邮件,可多人发送和抄送,可发送附件
MailMessage MailMessage_Mai = new MailMessage(); FileStream FileStream_my = null; //附件文件流 #region 设置Smtp服务器信息 /// /// 设置Smtp服务器信息 /// /// <param name="ServerName">SMTP...
16.4.1 MailMessage类和SmtpClient类的作用 367 16.4.2 POP3类的作用 368 16.4.3 电子邮件的发送 369 16.4.4 电子邮件的接收 370 16.5 本章小结 375 第17章 注册表应用 376 17.1 注册表基础知识 377 ...
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...
第一部分 使用ASP.NET Web表单 <br>第1章 建立ASP.NET页面 <br>1.1 ASP.NET和.NET框架 1.1.1 .NET框架类库 1.1.2 理解名称空间 1.1.3 标准的ASP.NET名称空间 1.1.4 与.NET框架兼容的语言 ...
winform发送邮件的一个小demo,填入收件人、发件人、授权码、服务器和端口即可发送邮件。
Jmail/asp.net定时发邮件内容图片+附件程序源码
1.EazyEmail邮件发送类库 ...笔者对该类库,从使用的角度进行了二次封装,nuget上可搜索EazyEmail,注入容器时通过委托来获得邮箱服务器的配置地址以及发送地址直接调用send方法即可。 容器注入代码。...
namespace LeeStudio.Basic{/// <summary>/// 邮件发送类/// </summary>public class SendEmail{private MailMessage mailMessage = new MailMessage(); //实例化一个邮件类 #region 构造函数/// <summary>/// 构造...