国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
用Visual C#實現(xiàn)POP3郵件接收程序
用Visual C#實現(xiàn)POP3郵件接收程序
   本文通過運用C#來實現(xiàn)一個基于POP3協(xié)議的郵件接收程序來向大家展示C#網(wǎng)絡編程的功能強大,同時也向大家介紹一下基于POP3協(xié)議的電子郵件接收原理。

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

   一開始便是客戶端與服務器的連接。不過,在客戶端連接到服務器之前,注意把端口設為POP3協(xié)議默認的110號。

   客戶端連接服務器成功后,服務器會返回以下信息:

   +OK……

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

   接下來,客戶端輸入USER <用戶名>

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

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

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

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

   RETR <郵件編號>

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

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

   DELE <郵件編號>

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

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


           圖1
   具體的過程步驟如下:

   第一步:打開VS.Net,新建一個工程,在項目類型里選擇"Visual C#項目",在模板里選擇"Windows 應用程序",工程名不妨為"MailReceiver",最后點擊"確定"按鈕。

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

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


             圖2
   第三步:代碼編寫。首先因為程序中運用到網(wǎng)絡編程的一些重要的類,如: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";
   最后,便是三個按鈕的消息響應函數(shù),這三個函數(shù)是程序的主體部分。其中Connect按鈕的消息響應函數(shù)完成了到POP3服務器的連接工作,并根據(jù)用戶名和密碼進行登錄。如果一切順利,則再向服務器發(fā)送STAT命令從而獲得郵箱中郵件的相關信息:郵件數(shù)量和大小,最終完成連接。其函數(shù)實現(xiàn)如下:

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

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

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

//登錄服務器過程
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());

//向服務器發(fā)送STAT命令,從而取得郵箱的相關信息:郵件數(shù)量和大小
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
smtp-pop3-imap
Email電子郵件應用分析
第10章-電子郵件協(xié)議
接收郵件服務器(POP)是?什么是 POP3? POP3 命令包括什么?
郵件服務器基礎:郵件服務相關協(xié)議四
telnet使用 刪除foxmail不能收取的郵件
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服