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