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;
}