在C#中如何在客戶端接收信件
2024-07-21 02:18:49
供稿:網友
創建界面
類型
對象名
text屬性
label
label1
label
label2
用戶名:
label
label3
密碼
textbox
textbox1
textbox
textbox2
button
button1
接收
button
button2
退出
當發送的驗證通過label1的text屬性就會顯示成功的消息
當發送的驗證沒有通過label1的text屬性就會顯示失敗的消息
顯示代碼
1.在代碼前端添加代碼
using system.threading;
using system.net;
using system.net.sockets;
using system.io;
2.添加字段代碼
private tcpclient mailclient;
private networkstream ns;
private streamreader sr;
private streamwriter sw;
3.雙擊“接收”按鈕
private void button1_click(object sender, system.eventargs e)
{
login();
}
private int login()
{
string m_response; //從服務器返回的信息變量
int totmessages; //指明在你的郵箱中有幾封
try
{
//連接服務器,其中第一參數代表服務器地址,第二參數代表pop3的端口數
mailclient=new tcpclient("pop.163.com",110);
}
catch(exception e)
{
label1.text="error";//服務器連接失敗
return 2;
}
ns=mailclient.getstream();//返回服務器字節流
sr=new streamreader(ns);
sw=new streamwriter(ns);
m_response=sr.readline();//讀取服務器字節流字符
//發送用戶名給服務器
sw.writeline("user "+textbox1.text);
sw.flush();
//驗證用戶名是否正確
m_response=sr.readline();
if(m_response.substring(0,3)=="-er")
{
label1.text="user error";//用戶連接失敗
return 2;
}
//發送密碼給服務器
sw.writeline("pass "+textbox2.text);
sw.flush();
try
{
//驗證密碼是否正確
m_response=sr.readline();
}
catch(exception e)
{
label1.text="password error";//密碼連接失敗
return 2;
}
if(m_response.substring(0,4)=="-err")
{
label1.text="password error";//密碼錯誤
return 2;
}
sw.writeline("stat");//執行pop3權限檢查命令
sw.flush();
m_response=sr.readline();
string[] nummess=m_response.split(' ');
totmessages=convert.toint16(nummess[1]);//獲取服務器中有幾封信件
if(totmessages>0)
{
label1.text="you have "+totmessages+" messages";
}
else
{
label1.text="you have no messages";
}
return 1;
}
4.雙擊“退出”按鈕
private void button2_click(object sender, system.eventargs e)
{
if(ns!=null)
{
sw.close();
sr.close();
ns.close();
mailclient.close();
}
}
注意點:
stat代表權限檢查命令,如果要得到標題和發件人信息要用top執行命令,要得到文本信息要用retr執行命令,這些內容還需我總結一下,我在下個禮拜會詳細介紹。
在星期四我寫了一篇關于“在c#中如何發送信件”的文章寫的不怎么樣,因此今天我另外寫了篇“在c#中如何接收信件”,在下個禮拜我會總結在c#中整個發送email和接收email的基本內容請大家光顧咯謝謝