神的随波逐流歌词奇然:C# 接收邮件

来源:百度文库 编辑:偶看新闻 时间:2024/05/08 00:37:03
C# 接收邮件2010-01-17 15:11

C#没有内置收邮件的类,参考网络上的代码,针对POP3协议服务器使用 Jmail组件来收邮件,针对IMAP协议服务器使用LumiSoft.Net 。

另外,一般免费邮箱需要在邮箱设置中开启 POP3(或IMAP)、 SMTP服务才可以使用非浏览器客户端连接。在测试以下代码之前,确保已经开启以上服务。

在编写代码之前,需要先安装Jmail组件,然后再用 vS2008 的工具转化为可以引用的组件。以下是在网络上得到的做法:

第一步:首先下载并安装最新版的Jmail。
第二步:使用“Visual Studio 2008 命令提示”重新编译组件:在命令提示框中执行TlbImp.exe命令,tlbimp "jmail.dll所在目录"/jmail.dll /out:myJmail.dll /namespace:myJmail
生成myJmail.dll


把这个 myjmail.dll 放到项目中,然后添加对它的引用即可。

下面是一个接收邮件的方法:

public static bool 收邮件(string 用户名,string 密码,string 服务器)
        {
            myJmail.POP3 pop = new myJmail.POP3Class();
            pop.Connect(用户名, 密码,服务器 , 110);//连接服务器
            for (int i = 1; i < pop.Messages.Count; i++)
            {
                if (pop.DownloadSingleMessage(i).Subject == null) continue;
                try
                {//以下这些属性用于检索接收到的邮件的信息
                   //   pop.DownloadSingleMessage(i).Subject.ToString() //主题
                   // pop.DownloadSingleMessage(i).From.ToString() //发送邮件的人
                   // pop.DownloadSingleMessage(i).Date.ToString();//发送邮件的时间
                   //其他信息……
                }
                catch (Exception ex)
                {
                    //ex.Message;
                }


            }
            pop.Disconnect();//释放连接
            return true;
        }

比如,163免费邮箱的用户名如 user@163.com,POP3服务器为 pop3.163.com,
新浪的为 pop3.sina.com,

对于Gmail邮箱,不能使用上面的代码来接收邮件,因为其服务器并不是使用POP3协议接收邮件,而是用IMAP协议。

第三方组件 LumiSoft.Net 已经有专门处理IMAP协议的类。所以下载 LumiSoft.Net 组件,添加对 LumiSoft.Net.dll 的引用,使用命名空间

using LumiSoft.Net.IMAP;
using LumiSoft.Net.IMAP.Client;

即可。

        public static bool Gmail收邮件(string 用户名, string 密码)
        {
            IMAP_Client 客户端 = new IMAP_Client();
            try
            {
                //连接邮件服务器通过传入邮件服务器地址和用于IMAP协议的端口号
                客户端.Connect("imap.gmail.com", 993, true);//接收邮件服务器必须为 993,且必须使用 SSL 加密。
                //登陆邮箱
                客户端.Login(用户名, 密码);

//处理邮箱中的信息,例如:
                IMAP_r_u_List [] list=客户端.GetFolders (null);//文件夹列表
                foreach (IMAP_r_u_List l in list)
                {
                    //l.ToString();
                }
            }
            catch (Exception ex)
            {
                //ex.Message;
            }
            finally
            {
                客户端.Disconnect();
            }
            return true;
        }

对该组件的参考请看:http://www.lumisoft.ee/lswww/download/downloads/Net/Help/