C# 接收邮件
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;
??????? }
轉載于:https://www.cnblogs.com/freedom831215/archive/2010/07/29/1787741.html
總結
- 上一篇: Ext 3.0 +ASP.NET2.0
- 下一篇: flex pv3d 有用公式