一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

用Visual C#實(shí)現(xiàn)POP3郵件接收程序

 odz521 2007-05-08
用Visual C#實(shí)現(xiàn)POP3郵件接收程序
   本文通過(guò)運(yùn)用C#來(lái)實(shí)現(xiàn)一個(gè)基于POP3協(xié)議的郵件接收程序來(lái)向大家展示C#網(wǎng)絡(luò)編程的功能強(qiáng)大,同時(shí)也向大家介紹一下基于POP3協(xié)議的電子郵件接收原理。

   首先我向大家介紹郵件接收的基本原理:

   一開始便是客戶端與服務(wù)器的連接。不過(guò),在客戶端連接到服務(wù)器之前,注意把端口設(shè)為POP3協(xié)議默認(rèn)的110號(hào)。

   客戶端連接服務(wù)器成功后,服務(wù)器會(huì)返回以下信息:

   +OK……

   字符+OK是POP3協(xié)議的返回信息。它的回應(yīng)信息不像SMTP協(xié)議那樣用豐富多變的數(shù)字表示,只有兩個(gè):+OK或者-ERR。其中,+OK表示連接成功,而-ERR則表示連接失敗。

   接下來(lái),客戶端輸入U(xiǎn)SER <用戶名>

   該命令告訴服務(wù)器你的用戶名。注意,有些服務(wù)器會(huì)區(qū)分大小寫字母的。

   服務(wù)器返回+OK后,客戶端輸入PASS <口令>

   服務(wù)器返回+OK后,還返回一些郵箱的統(tǒng)計(jì)信息,比如:+OK 1 message(s) [1304 byte(s)]
不同的服務(wù)器返回的信息格式不太一樣,所以我們可以用STAT命令來(lái)查看郵箱的情況。STAT命令的回應(yīng)中有兩個(gè)數(shù)字,分別表示郵件的數(shù)量和郵件的大小。

   如果信箱里有信,就可以用RETR命令來(lái)獲取郵件的正文。RETR命令的格式為:

   RETR <郵件編號(hào)>

   如果返回結(jié)果第一行是+OK信息,則表示成功。第二行起便是郵件的正文。最后一行和SMTP協(xié)議一樣,是一個(gè)單獨(dú)的英文句號(hào),表示郵件的結(jié)尾部分。

   把郵件存儲(chǔ)起來(lái)后要用DELE命令刪除郵箱中的郵件,否則原有的郵件會(huì)繼續(xù)保留在服務(wù)器上,一旦郵件一多,你的郵箱就爆了。DELE命令的格式為:

   DELE <郵件編號(hào)>

   如果刪錯(cuò)了,可以用RSET命令來(lái)恢復(fù)所有已被刪除的郵件。條件是你還沒(méi)有退出,一旦退出,那就一切Bye Bye了。全部完成以后,輸入QU99v命令就可以退出POP3服務(wù)器了。

   以上,我簡(jiǎn)要地向大家介紹了POP3郵件接收的基本過(guò)程和原理,下面就是一個(gè)運(yùn)用上面的原理實(shí)現(xiàn)的簡(jiǎn)易的郵件接收程序。在本程序中,我主要用到了兩個(gè)類:TcpClient類和NetworkStream類。TcpClient類是運(yùn)用C#進(jìn)行網(wǎng)絡(luò)編程的一個(gè)非常重要的類,它提供了通過(guò)網(wǎng)絡(luò)連接、發(fā)送和接收數(shù)據(jù)的簡(jiǎn)單方法,從而實(shí)現(xiàn)了網(wǎng)絡(luò)編程的大大簡(jiǎn)化。NetworkStream類實(shí)現(xiàn)通過(guò)網(wǎng)絡(luò)套接字發(fā)送和接收數(shù)據(jù)的標(biāo)準(zhǔn).Net框架流機(jī)制,它支持對(duì)網(wǎng)絡(luò)數(shù)據(jù)流的同步和異步訪問(wèn),是實(shí)現(xiàn)網(wǎng)絡(luò)通訊的重要組成部分。在這里我先給出程序最終的運(yùn)行效果,圖示如下:


           圖1
   具體的過(guò)程步驟如下:

   第一步:打開VS.Net,新建一個(gè)工程,在項(xiàng)目類型里選擇"Visual C#項(xiàng)目",在模板里選擇"Windows 應(yīng)用程序",工程名不妨為"MailReceiver",最后點(diǎn)擊"確定"按鈕。

   第二步:布置主界面。先往窗體上添加如下控件:六個(gè)Label控件、四個(gè)TextBox控件、一個(gè)RichTextBox控件、一個(gè)CheckBox控件、一個(gè)ListBox控件以及三個(gè)Button控件。各個(gè)控件的屬性設(shè)置如圖1所示。

   在設(shè)置完圖1的各個(gè)控件屬性后,對(duì)主窗體進(jìn)行合理的布局,則可得到最終的界面示意圖如下所示:


             圖2
   第三步:代碼編寫。首先因?yàn)槌绦蛑羞\(yùn)用到網(wǎng)絡(luò)編程的一些重要的類,如:TcpClient、NetworkStream,所以在程序的開頭處需添加以下名字空間(Namespace):

using System.Net;
using System.Net.Sockets;
using System.IO;
   接著,為我們的類添加以下一些公有的數(shù)據(jù)成員:

public TcpClient Server;
public NetworkStream NetStrm;
public StreamReader RdStrm;
public string Data;
public byte[] szData;
public string CRLF = "\r\n";
   最后,便是三個(gè)按鈕的消息響應(yīng)函數(shù),這三個(gè)函數(shù)是程序的主體部分。其中Connect按鈕的消息響應(yīng)函數(shù)完成了到POP3服務(wù)器的連接工作,并根據(jù)用戶名和密碼進(jìn)行登錄。如果一切順利,則再向服務(wù)器發(fā)送STAT命令從而獲得郵箱中郵件的相關(guān)信息:郵件數(shù)量和大小,最終完成連接。其函數(shù)實(shí)現(xiàn)如下:

private void Connect_Click(object sender, System.EventArgs e)
{
//將光標(biāo)置為等待狀態(tài)
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;

//用110端口新建POP3服務(wù)器連接
Server = new TcpClient(PopServer.Text,110);
Status.Items.Clear();

try
{
//初始化
NetStrm = Server.GetStream();
RdStrm= new StreamReader(Server.GetStream());
Status.Items.Add(RdStrm.ReadLine());

//登錄服務(wù)器過(guò)程
Data = "USER "+ Username.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());

Data = "PASS "+ Password.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine());

//向服務(wù)器發(fā)送STAT命令,從而取得郵箱的相關(guān)信息:郵件數(shù)量和大小

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    狠色婷婷久久一区二区三区| 欧美日韩亚洲精品在线观看| 少妇激情在线免费观看| 国产亚洲视频香蕉一区| 久久精品国产一区久久久| 日韩人妻一区中文字幕| 欧美日韩亚洲综合国产人| 亚洲精品熟女国产多毛| 伊人国产精选免费观看在线视频| 国产在线成人免费高清观看av| 麻豆国产精品一区二区| 国产欧美一区二区久久| 黑丝袜美女老师的小逼逼| 日韩蜜桃一区二区三区| 国产精品欧美激情在线观看| 久久99亚洲小姐精品综合| 激情五月天深爱丁香婷婷| 日韩国产中文在线视频| 欧美尤物在线观看西比尔| 欧美黑人巨大一区二区三区 | 欧美做爰猛烈叫床大尺度| 日韩人妻毛片中文字幕| 可以在线看的欧美黄片| 久久综合狠狠综合久久综合| 成人午夜在线视频观看| 黄色片一区二区三区高清| 欧美多人疯狂性战派对| 亚洲国产欧美精品久久| 亚洲第一视频少妇人妻系列| 国产av天堂一区二区三区粉嫩| 欧美日韩国产免费看黄片| 国产精品福利一级久久| 噜噜中文字幕一区二区| 亚洲国产中文字幕在线观看| 黄色日韩欧美在线观看| 欧美日韩精品一区二区三区不卡| 亚洲国产精品久久琪琪| 九九热最新视频免费观看| 国产精品亚洲精品亚洲| 激情五月综五月综合网| 精品一区二区三区免费看|