LumiSoft收取邮件(含邮件附件)

在.NET当中利用C#发送电子邮件很简单,微软也提供了默认的实现,但是收取电子邮件的操作却并没有提供解决方案。好在有一些第三方的解决方案可供选择,来简化程序员日常项目中的开发工作。

这里我选用LumiSoft,下载地址为http://www.lumisoft.ee/lswww/download/downloads/。当你打开链接,会发现里面有很多项目,为了实现收取邮件的功能,我们可以选择Examples里面的pop3_client_app.zip文件。我们解压缩,利用VS打开这个项目运行即可。这是官方提供的一个现成的示例,能够收取邮件并显示。

我们打开这个项目bin目录下的LumiSoft.Net.dll文件,这就是封装好的一个核心dll。我们可以利用.NET Reflector工具查看这个dll里面的类、方法等。

基本上有了官方源代码例子以及Reflector工具,我们就可以利用它进行编程实现了。使用方式很简单,只要在项目中引用LumiSoft.Net.dll这一个文件即可。下面我就直接贴出一段完整的控制台项目代码,实现的是收取邮件(显示)并下载邮件的附件(支持多个附件)到指定目录下的功能。没有漂亮的界面,留给读者自行完善吧。

namespace MailHelper
{
    class Program
    {
        static void Main(string[] args)
        {
            using (POP3_Client pop3 = new POP3_Client())
            {
                pop3.Connect("pop.qq.com", 995, true);
                pop3.Login("id", "password");//两个参数,前者为Email的账号,后者为Email的密码  

                POP3_ClientMessageCollection messages = pop3.Messages;
                Console.WriteLine("共{0}封邮件", messages.Count);  

                for (int i = 0; i < messages.Count; i++)
                {
                    POP3_ClientMessage message = messages[i];//转化为POP3
                    Console.WriteLine("\r\n正在检查第{0}封邮件...", i + 1);
                    if (message != null)
                    {
                        byte[] messageBytes = message.MessageToByte();
                        Mail_Message mime_message = Mail_Message.ParseFromByte(messageBytes);  

                        string sender = mime_message.From == null ? "sender is null" : mime_message.From[0].DisplayName;
                        string senderAddress = mime_message.From == null ? "senderAddress is null" : mime_message.From[0].Address;
                        string subject = mime_message.Subject ?? "subject is null";
                        string recDate = mime_message.Date == DateTime.MinValue ? "date not specified" : mime_message.Date.ToString();
                        string content = mime_message.BodyText ?? "content is null";
                        Console.WriteLine("邮件地址为{0}的{1},于{2}发送了主题为{3}的邮件", senderAddress, sender, recDate, subject);
                        Console.WriteLine("内容为{0}", content);  

                        MIME_Entity[] attachments = mime_message.GetAttachments(true, true);  

                        foreach (MIME_Entity entity in attachments)
                        {
                            if (entity.ContentDisposition != null)
                            {
                                string fileName = entity.ContentDisposition.Param_FileName;
                                if (!string.IsNullOrEmpty(fileName))
                                {
                                    DirectoryInfo dir = new DirectoryInfo(@"D:\email\");
                                    if (!dir.Exists) dir.Create();  

                                    string path = Path.Combine(dir.FullName, fileName);
                                    MIME_b_SinglepartBase byteObj = (MIME_b_SinglepartBase)entity.Body;
                                    Stream decodedDataStream = byteObj.GetDataStream();
                                    using (FileStream fs = new FileStream(path, FileMode.Create))
                                    {
                                        LumiSoft.Net.Net_Utils.StreamCopy(decodedDataStream, fs, 4000);
                                    }
                                    Console.WriteLine("{0}已经被下载。", fileName);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}  

效果图:

时间: 2024-09-28 02:29:59

LumiSoft收取邮件(含邮件附件)的相关文章

LumiSoft.Net.POP3接受邮件出现接收不到附件问题

问题描述 我有一个是qq企业邮箱账号,用这个账户发邮件给我qq邮箱,我自己用lumisoft写的程序接收qq邮箱邮件,发现其他附件能接收,就是qq企业邮箱账号发送来的邮件附件接收不了,邮件其他信息到时有,就是没有附件.求大神帮忙.接收邮件的代码:using(LumiSoft.Net.POP3.Client.POP3_Clientpop3=newPOP3_Client()){try{//与pop3服务器建立连接pop3.Connect(strhost,intport,pop3usessl);//验

基于Lumisoft.NET实现的邮件发送功能

在前面的一些文章中,有介绍过DotNet内置SMTP类的邮件发送功能,附件.嵌入图片的模式都有介绍,本文继续介绍Lumisoft.NET这个非常优秀的开源组件,用该组件来设计开发邮件工具,将变得更加方便,功能更加强大.网上很多文章基本介绍如何使用该组件来收取邮件较多,较少介绍使用该组件做邮件发送功能的.本文主要探寻使用该组件实现邮件的发送功能,邮件发送有两种方式,一种是不用发件人即可发送邮件,一种是使用发件人账户密码和SMTP服务器来实现邮件发送的,本文分别对这两种方式进行介绍. 组件下载地址:

lumisoft-关于邮件发送,附件名乱码问题。

问题描述 关于邮件发送,附件名乱码问题. 我在写基于lumisoft 邮件发送时遇见个很头疼的问题--附件名为汉字,且长度过长就不能被其他邮件系统正常解析. 首先我在将附件写入邮件body时使用: multipartMixed.BodyParts.Add(MIME_Message.CreateAttachment(stream, attachments[attach])); 发现有的邮件系统不能正确解析中文名,但是部分可以.我认为可能是编码问题.然后做了一下修改. MIME_Entity att

.NET开发邮件发送功能的全面教程(含邮件组件源码)

原文 http://www.cnblogs.com/heyuquan/p/net-batch-mail-send-async.html    今天,给大家分享的是如何在.NET平台中开发"邮件发送"功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         邮件发送相关.NET类库 3)         介绍我开发的一个发送邮件的小组件(MailHelper) 4)         MailHelper

深入Lumisoft.NET组件POP3邮件接收与删除操作的使用详解_实用技巧

Lumisoft.NET组件是一个非常强大的邮件发送.邮件接收等功能的开源组件,一般用它来处理邮件的相关操作,是非常合适的.之前也写过一些该组件的随笔文章,不过主要是利用来发送邮件居多,最近由于项目需要,需要利用该组件来接收邮件,邮件通过POP3协议进行接收到本地,故对该组件进行了全面的了解和使用.本文主要是在此背景上,介绍该组件的POP3协议处理类的使用.Lumisoft.NET组件2013年作者有做了一定的更新,修复了一些问题,本文是基于该组件的最新版本进行开发使用. 1.POP3登录及头部

用vmime收取邮件/解析邮件 教程

用vmime收取邮件 vmime对邮件格式和邮件协议做了很好的封装,使用起来还是非常方便的. vmime对于邮件协议都封装在vmime::net名字空间中,主要要用到的对象,有: vmime::net::session,主要用于维护和服务器之间的连接 vmime::net::store,表示一个邮件存储,这是一个基类,没种邮件协议都有自己的store(如POP3Store,IMAPStore) vmime::net::folder,表示邮件存储上的文件夹,和store一样,每种邮件协议,都有自己

在用JavaMail邮件中,邮件中的图片以附件形式发送到服务器,这样在邮件内容和附件中都显示出来,怎样才能让图片不在附件中显示出来?

问题描述 在用JavaMail邮件中,邮件中的图片以附件形式发送到服务器,这样图片在邮件内容和附件中都显示出来,怎样才能让图片不在附件中显示出来? 解决方案 解决方案二:抓个分,谢谢楼主解决方案三:我感觉不是javamail的问题了吧.是ui客户端设置问题吧.解决方案四:在一篇文章里提到了这点说能隐藏,但是没给出具体实现方法,我觉得能隐藏更好,如果全显示在附件中太难看了刚申请的号,就20分~解决方案五:看看张孝祥的邮件视频.我还没看完..好像有.解决方案六:不显示你就在程序中不让它们显示出来三.

C#引用LumiSoft.Net.dll搜索邮件,报错“00003 BAD Missing or invalid argument to SEARCH”如何解决

问题描述 C#引用LumiSoft.Net.dll搜索邮件,报错"00003BADMissingorinvalidargumenttoSEARCH"如何解决部分代码如下:IMAP_Clientclnt=newIMAP_Client();clnt.Connect(_MailServer,_MailPort,true);clnt.Login(_Username,_Password);clnt.SelectFolder("Inbox");int[]messageUIDs=

怎样用公式把domino邮件里面的附件显示出来,并且iphone手机也能直接打开?

问题描述 怎样用公式把domino邮件里面的附件显示出来,并且iphone手机也能直接打开? 解决方案 解决方案二:我在web上能打开的URL是这样的http://email.sanfi.cc/mail/guanjincong.nsf/00bedd54ad337b9c48256f5000068f9a/29DB620C0C28103948257E4500112C11/$file/189%E7%94%B5%E8%AF%9D%E8%B4%B9%5B11%E6%9C%88%5D%20-%20%E4%BF

谷歌“告密”:美国男子因邮件含儿童色情被捕

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 谷歌"告密":美国男子因邮件含儿童色情被捕 新浪科技讯 北京时间8月4日上午消息,一名休斯顿男子日前因为电子邮件中含有儿童色情内容被警方逮捕,而由于这一消息是谷歌向警方提交的,因此引发了外界的争论. 倘若在你的电子邮件中发现非法内容,谷歌是否有权通知警方?在休斯顿男子约翰·亨利·斯基勒恩(John Henry Skille