`
zu14
  • 浏览: 459590 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

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

阅读更多

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

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

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

 

 

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

 MailMessage eml

 

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

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

SmtpClient

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

System.Net.Mail

 

 

System.Net.Mail.MailWriter

上面的红线框标注的,只是 writer 进行了一些写入操作,没有任何的网络交互,而 writer 就是我们上次说的那个生成EML 文件的 stream。

说到这里,其实问题就清了,.NET 的 SmtpClient 对于 DeliveryMethod 为 SpecifiedPickupDirectoryPickupDirectoryFromIis 的情况,所做的只是 在特定的目录下,生成一个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,不能自己控制。

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

分享到:
评论

相关推荐

    电子邮件发送 ASP.NET+Sql2005

    在ASP.NET中发送电子邮件,主要使用System.Net.Mail命名空间中的SmtpClient和MailMessage类。SmtpClient负责处理SMTP(简单邮件传输协议)协议,而MailMessage则用来创建和定义邮件内容。 1. 创建邮件:首先,你...

    C#读取.eml文件(带附件下载)

    // 将文件流转换为文本,因为MailMessage无法直接从文件流加载 StreamReader reader = new StreamReader(fileStream); string emlContent = reader.ReadToEnd(); // 用字符串内容初始化MailMessage message....

    c#解析eml、CDO解析发送eml(Demo)

    C#中可以使用System.Net.Mail命名空间下的MailMessage类来解析EML文件。以下是一段基本的代码示例: ```csharp using System.IO; using System.Net.Mail; public static MailMessage ParseEmlFile(string filePath...

    ASP.NET + JMail

    2. **Visual Studio 2010**:这是微软开发的一款集成开发环境(IDE),支持多种编程语言,包括C#、VB.NET等。VS2010为开发者提供了代码编辑、调试、版本控制和项目管理等功能,使构建ASP.NET应用程序变得更加便捷。 ...

    C#.NET+SQL2000邮件收发系统

    这个系统结合了C#.NET的强大力量和SQL Server 2000的数据存储与管理能力,为用户提供了一个高效、稳定的邮件解决方案。 在C#.NET中,实现邮件收发主要依赖于System.Net.Mail命名空间。这个命名空间包含了SmtpClient...

    asp.net + c# 开发发送邮件

    在ASP.NET和C#的开发...在提供的"ch12"文件中,可能包含的是关于如何在ASP.NET和C#环境下实现邮件发送的具体代码示例、配置信息或教程章节。通过阅读和学习这些内容,你可以深入了解并掌握实际开发中的邮件发送功能。

    一个采用ASP.NET +C#+Gmail credentials实现邮件发送的程序例子

    3. **发送邮件**:使用SmtpClient的Send方法将MailMessage发送出去。 在实际开发中,为了提高用户体验和安全性,通常会使用异步方法来发送邮件,避免阻塞UI线程。同时,考虑到Gmail对发送邮件的限制,例如速率限制...

    基于ASP.NET+cs的电子邮件简单收发系统设计与实现(源代码+项目报告).zip

    《基于ASP.NET+CS的电子邮件简单收发系统设计与实现》是一个典型的毕业设计项目,它结合了ASP.NET Web开发技术和C#(CS)客户端编程,为用户提供了便捷的电子邮件收发功能。该项目不仅包含了源代码,还有一份详细的...

    C#批量转换邮件格式MSG-EML互转

    这段代码会遍历"InputFolder"下的所有文件,根据文件扩展名调用相应的转换函数,并将转换后的文件保存到"OutputFolder"。 通过这种方式,你可以轻松地实现C#环境中大规模的邮件格式转换。记住,使用Aspose.Email库...

    asp.net+注册后自动发送邮件,通过链接进行验证

    ASP.NET 是一个强大的Web应用程序开发框架,由微软公司推出,用于构建动态、数据驱动的Web应用。在"asp.net+注册后自动发送邮件,通过链接进行验证"的场景中,我们主要涉及以下知识点: 1. **用户注册系统**:用户...

    基于asp.net+cs的电子邮件简单收发系统毕业设计与实现(源代码+项目报告).zip

    ASP.NET中,实现CS(客户端)电子邮件功能通常会涉及到System.Net.Mail命名空间,使用MailMessage、SmtpClient等类来构建和发送邮件。邮件的接收可能涉及到POP3或IMAP协议,通过相应的库或API实现。源代码可能包括...

    基于ASP.NET + Web Mail收发系统设计与开发毕业设计(源代码+论文)

    本文设计并实现的邮件收发系统基于B/S模式,以组件技术为基础,利用System.Web.Mail命名空间构造函数,分别调用Mailmessage,Mailattachment和SMTPmail方法,实现以Web网页的形式收发电子邮件,用户只需要通过Web页面...

    C#使用MailMessage发送邮件

    在.NET框架中,C#语言提供了丰富的类库用于发送电子邮件,其中一个关键的类就是`System.Net.Mail.MailMessage`。这个类允许开发者构建和配置电子邮件消息,包括收件人、主题、正文以及附件等信息。本篇文章将深入...

    毕业设计,基于ASP.NET+Web Mail开发的邮件收发系统,内含完整源代码,数据库,毕业论文

    本文设计并实现的邮件收发系统基于B/S模式,以组件技术为基础,利用System.Web.Mail命名空间构造函数,分别调用Mailmessage,Mailattachment和SMTPmail方法,实现以Web网页的形式收发电子邮件,用户只需要通过Web页面...

    基于ASP.NET+cs的电子邮件简单收发项目设计与实现(源代码+项目报告).zip

    在本项目中,我们主要探讨的是如何利用ASP.NET框架结合C#(cs)语言来设计并实现一个简单的电子邮件收发系统。ASP.NET是Microsoft开发的一个用于构建Web应用程序的强大框架,而C#则是一种面向对象的编程语言,两者...

    提取eml文件或txt文件中的电子邮件地址.rar_eml c#_eml 邮件_提取txt_邮件_邮件提取

    首先,我们需要读取eml文件并将其转换为MailMessage对象,然后可以访问其To、Cc和Bcc属性,它们分别代表了收件人、抄送人和密送人的列表,这些列表中包含了电子邮件地址。同时,我们还需要遍历邮件的正文中可能存在...

    C#.net发送邮件完整源代码(DEMO完整版)

    首先,我们要了解C#.NET中用于发送邮件的主要类:`System.Net.Mail.SmtpClient`和`System.Net.Mail.MailMessage`。`SmtpClient`类负责处理SMTP(简单邮件传输协议)通信,而`MailMessage`类则用来封装邮件内容。 1....

    C# 邮件发送类,MailMessage

    本篇文章将深入探讨`MailMessage`类及其在C#中的应用。 首先,让我们了解`MailMessage`类的基本概念。`MailMessage`类代表一封电子邮件,包含了邮件的所有关键属性,如发件人、收件人、主题和正文。以下是一些主要...

    C# 使用SmtpClient类发送电子邮件

    在C#编程语言中,`System.Net.Mail`命名空间提供了`SmtpClient`类,用于通过SMTP(简单邮件传输协议)发送电子邮件。本教程将详细解释如何使用`SmtpClient`类来实现电子邮件的发送,并结合提供的源代码进行分析。 ...

Global site tag (gtag.js) - Google Analytics