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-10-11 22:23:53

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

邮件正文及其附件的发送的C++实现

 这段代码我花了整整一天来编写,如果转载,请注明出处,谢谢!    前面的一篇文章已经讲了如何发送邮件正文,原理我就不再叙述了,要了解的同学请到这里查看!    http://blog.csdn.net/lishuhuakai/article/details/27503503    网上很多发送邮件附件的代码都不能用,所以我用心写了一个,直接封装成了一个类,需要的同学可以直接调用这个类来发送邮件,使用的是纯C++,不含MFC,请放心使用.(在VS2013下测试完美通过!)    废话不多说,直接

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

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

javamail 收邮件并解析附件

package com.zz.mail; import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; import java.io.File; import jxl.*; /** * 有一封邮件就需要建立一个ReciveMail对象 */ public class ReciveOneMail { private MimeMessage mi

java mail邮件发送(带附件) 支持SSL

java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.util.Vector; public class MailSenderInfo { // 发送邮件的server的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址 pr

java mail邮件发送(带附件)

java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.util.Vector; public class MailSenderInfo { // 发送邮件的服务器的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址 priva

利用springframework+javax.mail发邮件(普通邮件、带附件邮件、HTML格式邮件)

Spring提供了发送电子邮件的支持,可以发送普通邮件.带附件邮件.HTML格式邮件,甚至还可以使用Velocity模板定制化邮件内容. 一.引入相关的库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <!-- spring核心库 -->         <dependency>             <groupId>org.springframework<

解决zabbix邮件内容为附件

安装zabbix之后,设置邮件脚本报警的时候,发送的报警内容变成了tcmime.1278.1278.1724.bin或ATT00001.bin. yum -y install  mailx dos2unix     //安装mailx工具和dos2unix转换工具 以下是脚本内容: [root@localhost alertscripts]# cat sendmail.sh #!/bin/bash #export.UTF-8         //解决发送的中文变成了乱码的问题 FILE=/tmp

获取163邮箱的邮件 并下载附件

老师要求让获取邮箱邮件内容,发件人.收件人.发送时间等等,转存到excel里面,并下载邮件带的附件,通过网上搜集资料,整理出如下代码,只是实现功能,代码并未优化. 使用的时候只需要填写自己邮箱账号密码就可 下面贴出代码, package ltg.defualt; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import ltg.helper.POP3ReceiveMailTe

JavaMail读取收件箱退信邮件/分析邮件附件获取Message_Id

需求描述:公司最近有个项目邮件通知功能,但是客户上传的邮件地址并不一定存在,以及其他的各种问题.所有希望发送通知后有个回执,及时发现地址存在问题的邮箱. 需求分析:经过分析JavaMail可以读取收件箱邮件,我们可以通过对应通知的退信来回写通知状态.那么问题来了,发送通知和退信如何建立映射?经过调研,最终确定采用以下方案解决. 映射方案: 在发送邮件通知时在Header中指定自定义的Message_Id,作为唯一标示,本系统中采用UUID. 定时任务扫描服务器邮箱的收件箱,本系统我们搜索收件箱中

邮件发送超大附件,上传下载特别慢,怎么解决?

目前,已有不少邮箱如QQ邮箱.网易邮箱等支持超大附件,可以发送2G或3G大小的文件.但是诸多邮箱发送超大附件普遍存在以下问题: 首先,邮件发送大文件对文件大小有限制,超过上限的超大附件无法发送:其次,超大附件上传.下载的速度有限,而且速度也不稳定:再次,即便上传成功之后,如果对方的邮箱接收附件的大小也会有限制,甚至会导致邮件发送失败. 作为最常用的办公工具之一,邮箱附件上传下载慢.传输中断.无法发送超大附件等问题,是职场人士的一大困扰.怎么解决这个问题? 推荐一款可以通过邮箱发送超大附件的工具-