国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

運用C#實現POP3郵件接收程序

2024-07-21 02:27:14
字體:
來源:轉載
供稿:網友
微軟的vs.net開發工具推出已有一段時日了,其中的那門新語言c#也日漸為大家所熟悉并接受。c#作為一門新興的語言相信具有傳統語言不可比擬的優越性,特別是在網絡應用方面,開發者更是感覺到了c#的強大功能。所以本文就通過運用c#來實現一個基于pop3協議的郵件接收程序來向大家展示c#網絡編程的功能強大,同時也向大家介紹一下基于pop3協議的電子郵件接收原理。 首先我向大家介紹郵件接收的基本原理: 一開始便是客戶端與服務器的連接。不過,在客戶端連接到服務器之前,注意把端口設為pop3協議默認的110號。客戶端連接服務器成功后,服務器會返回以下信息: +ok…… 字符+ok是pop3協議的返回信息。它的回應信息不像smtp協議那樣用豐富多變的數字表示,只有兩個:+ok或者-err。其中,+ok表示連接成功,而-err則表示連接失敗。接下來,客戶端輸入user <用戶名> 該命令告訴服務器你的用戶名。注意,有些服務器會區分大小寫字母的。服務器返回+ok后,客戶端輸入pass <口令> 服務器返回+ok后,還返回一些郵箱的統計信息,比如:+ok 1 message(s) [1304 byte(s)] 不同的服務器返回的信息格式不太一樣,所以我們可以用stat命令來查看郵箱的情況。stat命令的回應中有兩個數字,分別表示郵件的數量和郵件的大小。如果信箱里有信,就可以用retr命令來獲取郵件的正文。retr命令的格式為: retr <郵件編號> 如果返回結果第一行是+ok信息,則表示成功。第二行起便是郵件的正文。最后一行和smtp協議一樣,是一個單獨的英文句號,表示郵件的結尾部分。把郵件存儲起來后要用dele命令刪除郵箱中的郵件,否則原有的郵件會繼續保留在服務器上,一旦郵件一多,你的郵箱就爆了。dele命令的格式為: dele <郵件編號> 如果刪錯了,可以用rset命令來恢復所有已被刪除的郵件。條件是你還沒有退出,一旦退出,那就一切bye bye了。全部完成以后,輸入quit命令就可以退出pop3服務器了。 實現 以上,我簡要地向大家介紹了pop3郵件接收的基本過程和原理,下面就是一個運用上面的原理實現的簡易的郵件接收程序。有了對基本原理的理解,編程的工作就變得相當輕松了。在本程序中,我主要用到了兩個類:tcpclient類和networkstream類。tcpclient類是運用c#進行網絡編程的一個非常重要的類,它提供了通過網絡連接、發送和接收數據的簡單方法,從而實現了網絡編程的大大簡化。networkstream類實現通過網絡套接字發送和接收數據的標準.net框架流機制,它支持對網絡數據流的同步和異步訪問,是實現網絡通訊的重要組成部分。在這里我先給出程序最終的運行效果,圖示如下:

具體的過程步驟如下: 第一步:打開vs.net,新建一個工程,在項目類型里選擇“visual c#項目”,在模板里選擇“windows 應用程序”,工程名不妨為“mailreceiver”,最后點擊“確定”按鈕。 第二步:布置主界面。先往窗體上添加如下控件:六個label控件、四個textbox控件、一個richtextbox控件、一個checkbox控件、一個listbox控件以及三個button控件。各個控件的屬性設置如下表所示: form1(主窗體) text屬性 pop3郵件接收程序 maximizebox屬性 false label1 text屬性 pop3 服務器地址: textalign屬性 middleright label2 text屬性 用戶名: textalign屬性 middleright label3 text屬性 密碼: textalign屬性 middleright label4 text屬性 信息: textalign屬性 middleleft label5 text屬性 郵件編號: textalign屬性 middleleft label6 text屬性 狀態: textalign屬性 middleleft popserver、username、password、mailnum(textbox控件) text屬性 (均為空) password的passwordchar屬性 * message(richtextbox控件) text屬性 (為空) backupchbox(checkbox控件) text屬性 在郵件服務器上保留備份 status(listbox控件) itemheight屬性 12 connect(button控件) text屬性 連接 flatstyle屬性 flat disconnect    (button控件) text屬性 斷開連接 flatstyle屬性 flat enabled屬性 false retrieve(button控件) text屬性 收取郵件 flatstyle屬性 flat enabled屬性 false 其他屬性均可為默認值。在設置完以上的各個控件屬性后,對主窗體進行合理的布局,則可得到最終的界面示意圖如下所示: 第三步:代碼編寫。首先因為程序中運用到網絡編程的一些重要的類,如:tcpclient、networkstream,所以在程序的開頭處需添加以下名字空間(namespace): using system.net; using system.net.sockets; using system.io; 接著,為我們的類添加以下一些公有的數據成員: public tcpclient server; public networkstream netstrm; public streamreader  rdstrm; publicstring data; publicbyte[] szdata; publicstring crlf = "/r/n"; 最后,便是三個按鈕的消息響應函數,這三個函數是程序的主體部分。其中connect按鈕的消息響應函數完成了到pop3服務器的連接工作,并根據用戶名和密碼進行登錄。如果一切順利,則再向服務器發送stat命令從而獲得郵箱中郵件的相關信息:郵件數量和大小,最終完成連接。其函數實現如下:list1 而disconnect按鈕的消息響應函數則通過向服務器發送quit命令來終止和郵件服務器的連接,實現比較簡單,具體函數如下:list2 最后,retrieve按鈕的消息響應函數則根據用戶在郵件編號文本框中的輸入來取得相應的郵件,它向服務器發送的命令為retr,并根據返回的信息判斷郵件的有無。若返回信息的第一個字符為“+”,則表示+ok,也即成功;若為“-”,則表示-err,也即為失敗。在成功的情況下,若用戶選擇了“在郵件服務器上保留備份”,則收取郵件后不刪除服務器上的備份,否則用dele命令來進行相應的刪除。函數實現如下:list3 最后一步便是保存你的勞動成果,再進行編譯、建立并運行了,最終的圖示我已經在文章的開頭處給出了,還行吧。到處為止,我們已經完成了pop3郵件接收程序的全部工作了。從中,我們不難發現運用c#完成一些網絡實用編程是非常容易的。只要我們掌握了其中的原理,具體的編程工作就變得非常的輕松而且有條理。即使以前你對pop3郵件接收的實現一無所知,我想在看完這篇文章后,你對它至少會有了個大概的了解。不過,還要指出的是這只是一個很簡單的實例,如果要在實際中應用,則還需大大的改進,有興趣的讀者不妨一試。源代碼文件為mailreceiver.rar

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿图什市| 会泽县| 松溪县| 高阳县| 衡南县| 丁青县| 云阳县| 璧山县| 杭州市| 武清区| 钟山县| 外汇| 曲麻莱县| 婺源县| 会泽县| 玛沁县| 河北省| 明光市| 宾阳县| 台南县| 东宁县| 青浦区| 武城县| 河源市| 合江县| 丰都县| 长汀县| 友谊县| 镇赉县| 清涧县| 通许县| 新沂市| 抚宁县| 新化县| 沽源县| 绥芬河市| 正镶白旗| 古田县| 宁武县| 青冈县| 托里县|