C#沒有內(nèi)置收郵件的類,參考網(wǎng)絡(luò)上的代碼,針對POP3協(xié)議服務(wù)器使用 Jmail組件來收郵件,針對IMAP協(xié)議服務(wù)器使用LumiSoft.Net 。
另外,一般免費郵箱需要在郵箱設(shè)置中開啟 POP3(或IMAP)、 SMTP服務(wù)才可以使用非瀏覽器客戶端連接。在測試以下代碼之前,確保已經(jīng)開啟以上服務(wù)。
在編寫代碼之前,需要先安裝Jmail組件,然后再用 vS2008 的工具轉(zhuǎn)化為可以引用的組件。以下是在網(wǎng)絡(luò)上得到的做法:
第一步:首先下載并安裝最新版的Jmail。
第二步:使用“Visual Studio 2008 命令提示”重新編譯組件:在命令提示框中執(zhí)行TlbImp.exe命令,tlbimp "jmail.dll所在目錄"/jmail.dll /out:myJmail.dll /namespace:myJmail
生成myJmail.dll
把這個 myjmail.dll 放到項目中,然后添加對它的引用即可。
下面是一個接收郵件的方法:
public static bool 收郵件(string 用戶名,string 密碼,string 服務(wù)器)
{
myJmail.POP3 pop = new myJmail.POP3Class();
pop.Connect(用戶名, 密碼,服務(wù)器 , 110);//連接服務(wù)器
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() //發(fā)送郵件的人
// pop.DownloadSingleMessage(i).Date.ToString();//發(fā)送郵件的時間
//其他信息……
}
catch (Exception ex)
{
//ex.Message;
}
}
pop.Disconnect();//釋放連接
return true;
}
比如,163免費郵箱的用戶名如 user@163.com,POP3服務(wù)器為 pop3.163.com,
新浪的為 pop3.sina.com,
對于Gmail郵箱,不能使用上面的代碼來接收郵件,因為其服務(wù)器并不是使用POP3協(xié)議接收郵件,而是用IMAP協(xié)議。
第三方組件 LumiSoft.Net 已經(jīng)有專門處理IMAP協(xié)議的類。所以下載 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
{
//連接郵件服務(wù)器通過傳入郵件服務(wù)器地址和用于IMAP協(xié)議的端口號
客戶端.Connect("imap.gmail.com", 993, true);//接收郵件服務(wù)器必須為 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/