使用C#和OpenPop.dll开发读取POP3邮件程序
2014-02-24 11:51
2226 查看
制作一个ASP.NET MVC4论坛项目,该项目需要将以往十多年的Mail List(邮件列表)内容都导入到新的论坛中,因此需要能够将邮件的标题、发布时间、发布人及邮件内容导入到论坛的数据库内。.Net并没有提供内置的读取POP3邮件内容的类库,因此,只有在网上查询可用的类库。
查询的结果,OpenPop.dll(官网下载地址:http://sourceforge.net/projects/hpop/)是符合要求的一种。
下面的代码只给出了最核心、最简捷的内容,以Console方式完成。 利用Pop3Client对象的Connect方法,给出PoP3 Server、端口号、是否需要SSL连接;Authenticate方法则给出POP3的账号及密码。
在使用中,标题、发送人及发送时间及许多其它信息(如cc bcc to等等)都可以使用简单的方法取出(如下面代码所示),因为它们都是以plaintext的方式发送的,但对于邮件内容(body)和附件(attachment),由于涉及到multipart格式,因此,为能简单地取出。在下面的代码中,对于邮件内容的提取方式,最主要的是两种:一种是text格式,另外一种是multipart格式,这两种格式的提取办法是不同的。
下面的代码由笔者实际调试,真实可用。
更多帮助内容,可以参见官网帮助文档:http://hpop.sourceforge.net/documentation/index.html
另外,如果直接读取Outlook(OE)或者Windows Live Mail格式的邮件内容(扩展名.eml),可以使用LumiSoft.Net.dll完成
查询的结果,OpenPop.dll(官网下载地址:http://sourceforge.net/projects/hpop/)是符合要求的一种。
下面的代码只给出了最核心、最简捷的内容,以Console方式完成。 利用Pop3Client对象的Connect方法,给出PoP3 Server、端口号、是否需要SSL连接;Authenticate方法则给出POP3的账号及密码。
在使用中,标题、发送人及发送时间及许多其它信息(如cc bcc to等等)都可以使用简单的方法取出(如下面代码所示),因为它们都是以plaintext的方式发送的,但对于邮件内容(body)和附件(attachment),由于涉及到multipart格式,因此,为能简单地取出。在下面的代码中,对于邮件内容的提取方式,最主要的是两种:一种是text格式,另外一种是multipart格式,这两种格式的提取办法是不同的。
下面的代码由笔者实际调试,真实可用。
using System; using OpenPop.Pop3; using OpenPop.Mime; using System.Collections.Generic; #region using OpenPop.dll to read email public static void ReadPop3() { using (Pop3Client client = new Pop3Client()) { if (client.Connected) { client.Disconnect(); } // Connect to the server, false means don't use ssl client.Connect("pop3.263.net", 110, false); // Authenticate ourselves towards the server by email account and password client.Authenticate("wusir@263.net", "12345678"); //email count int messageCount = client.GetMessageCount(); //i = 1 is the first email; 1 is the oldest email for (int i = 1; i <= messageCount; i++) { Message message = client.GetMessage(i); string sender = message.Headers.From.DisplayName; string from = message.Headers.From.Address; string subject = message.Headers.Subject; DateTime Datesent = message.Headers.DateSent; MessagePart messagePart = message.MessagePart; //email body, string body = " "; if (messagePart.IsText) { body = messagePart.GetBodyAsText(); } else if (messagePart.IsMultiPart) { MessagePart plainTextPart = message.FindFirstPlainTextVersion(); if (plainTextPart != null) { // The message had a text/plain version - show that one body = plainTextPart.GetBodyAsText(); } else { // Try to find a body to show in some of the other text versions List<MessagePart> textVersions = message.FindAllTextVersions(); if (textVersions.Count >= 1) body = textVersions[0].GetBodyAsText(); else body = "<<OpenPop>> Cannot find a text version body in this message."; } } } } } #endregion
更多帮助内容,可以参见官网帮助文档:http://hpop.sourceforge.net/documentation/index.html
另外,如果直接读取Outlook(OE)或者Windows Live Mail格式的邮件内容(扩展名.eml),可以使用LumiSoft.Net.dll完成
相关文章推荐
- 使用OpenPop.dll开发读取POP3邮件程序
- 使用C#开发读取POP3邮件程序
- 使用支持Pop3的邮箱给好友群发邮件. C# .Net 2.0 邮件发送 + XML 读取操作代码.
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- C#使用 LumiSoft.Net.dll 通过IMAP 登陆QQ邮箱读取未读邮件
- C#开发:openfiledialog的使用
- 使用C#开发winform程序的界面框架
- 使用C#和Excel进行报表开发(八)-用程序绑定数据源
- 使用Assembly来开发c#程序
- C#程序和其使用的dll必须是同一版本的VS编译的
- 使用C#开发SmartPhone程序入门
- 使用.net框架应用C#语言开发窗口程序的一些注意事项
- 使用C#和Excel进行报表开发(八)-用程序绑定数据源
- 使用C#和Excel进行报表开发(八)-用程序绑定数据源
- c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
- 实现POP3邮件接收程序[C#]
- 使用C#编写简单的图形化的可发送附件的邮件客户端程序
- .net使用OpenPop自动收邮件,并将邮件内容存入数据库
- QT程序自动寻找依赖的DLL(Qt官方开发环境生成的exe发布方式--使用windeployqt)
- c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决方法