郵件收發(fā)系統(tǒng)總結(jié)
郵件收發(fā)系統(tǒng)總結(jié)
1引言
1.1編寫目的
1.總結(jié)郵件收發(fā)系統(tǒng)開發(fā)過程中的思想和想法2.總結(jié)系統(tǒng)開發(fā)時遇到的問題和尚未解決的問題3.提出系統(tǒng)需要完善的功能,模塊等
4.總結(jié)開發(fā)過程中用到的技術(shù)和學(xué)習(xí)到的知識5.加深對技術(shù)及知識的鞏固和理解
1.2背景
a.項目名稱:郵件收發(fā)系統(tǒng)
開發(fā)環(huán)境:WindowsXP/xampp(PHP+Apache+Mysql)/GVIMb.任務(wù)提出者:李波(libo@eyou.net)
任務(wù)開發(fā)者:李鵬菲(li.pengfei@eyou.net)
1.3參考資料
a.PHP參考手冊b.Jquery參考手冊c.CSS參考手冊d.Smarty參考手冊
2實際開發(fā)結(jié)果
2.1目錄結(jié)構(gòu)
ClassImagesJs1).jquery-1.4.min.js2).custom.jsTemplates1).index.tpl
---文件夾:smarty模板類---文件夾:程序中的圖片---文件夾:程序中的js文件---1.4版jquery包含文件---jquery主文件---文件夾:模板文件---首頁tpl模板
2).Mail_send.tpl3).Mail_list.tpl4).Css.cssFunction.phpInclude.phpIndex.phpMail_ajax.phpMail_back.phpMail_class.phpMail_list.phpMail_send.phpPage_class.phpPop_class.php---郵件發(fā)送頁面tpl模板
---郵件列表及郵件詳細信息頁面(主頁面)tpl模板---樣式表文件---系統(tǒng)函數(shù)文件
---smarty模板文件,系統(tǒng)全局替換變量在此文件定義---首頁文件
---Ajax請求頁.處理pop相關(guān)ajax請求并返回數(shù)據(jù)---Ajax請求頁smtp相關(guān)ajax請求并返回數(shù)據(jù)---smtp郵件發(fā)送類文件---郵件列表頁---郵件發(fā)送頁---分頁類
---pop郵件接收類文件
2.2主要功能和性能
a.利用SMTP協(xié)議實現(xiàn)郵件的發(fā)送;
兼容性不夠.對PHP的MIME編碼應(yīng)用不夠.郵件頭部分字段未編碼和郵件體位編碼碼
b.利用POP協(xié)議實現(xiàn)郵件的接收;
兼容性不夠.Head解碼時,不能正確處理多個收件人的情況.Body解碼時,換行處亂碼.
c.郵件列表頁分頁;
每頁2封郵件,點擊郵件標題進入郵件詳細信息頁面,點擊預(yù)覽可預(yù)覽按鈕郵件內(nèi)容.
2.3未能完成的功能
(一)郵件詳細信息頁面:
1.郵件詳細信息頁面的動態(tài)改變字體大小;2.快速回復(fù)文本信息(二)郵件列表頁
1.給郵件列表頁標題標記顏色的功能還沒有做完;2.快速回復(fù)文本信息
3.滑過發(fā)件人名字時彈出的浮動層中:
1)如果發(fā)件人在通訊錄中,則顯示發(fā)件人的其他擴展信息
2)給出針對發(fā)件人的操作按鈕,如:阻止此人信件(即加入黑名單),添加到通訊錄(如果不在通訊錄中的話),顯示所有此人發(fā)來的郵件…(三)查詢功能…
4經(jīng)驗與教訓(xùn)
通過這次程序開發(fā),我對郵件收發(fā)系統(tǒng)的發(fā)送和接收郵件有了基本的了解;對POP協(xié)議和SMTP的工作原理有了一定的認識;對Smarty模板的使用有了新的認識,我會繼續(xù)學(xué)習(xí)Smarty并將其靈活運用到以后的開發(fā)過程中;也在開發(fā)過程中接觸并學(xué)習(xí)到了新的知識.雖然之前看過入職須知中的代碼規(guī)范,由于習(xí)慣以及其他原因,自己的代碼書寫不規(guī)范,在以后的開發(fā)中要保持正確的代碼書寫習(xí)慣.嚴格按照代碼規(guī)范走;加強對Jquery,Smarty的學(xué)習(xí);熟悉gvim的使用;
擴展閱讀:郵件收發(fā)系統(tǒng)
郵件收發(fā)系統(tǒng)
電子郵件(簡稱E-mai1)又稱電子信箱、電子郵政,它是種用電子手段提供信息交換的通信方式。它是全球多種網(wǎng)絡(luò)上使用最普遍的一項服務(wù)。這種非交互式的通信,加速了信息的交流及數(shù)據(jù)傳送,它是個簡易、快速的方法。通過連接全世界的Internet,實現(xiàn)各類信號的傳送、接收、存貯等處理,將郵件送到世界的各個角落。到目前為止,可以說電子郵件是Internet資源使用最多的一種服務(wù),E-mai1不只局限于信件的傳遞,還可用來傳遞文件、聲音及圖形、圖像等不同類型的信息。
電子郵件不是一種“終端到終端”的服務(wù),是被稱為“存貯轉(zhuǎn)發(fā)式”服務(wù)。這正是電子信箱系統(tǒng)的核心,利用存貯轉(zhuǎn)發(fā)可進行非實時通信,屬異步通信方式。即信件發(fā)送者可隨時隨地發(fā)送郵件,不要求接收者同時在場,即使對方現(xiàn)在不在,仍可將郵件立刻送到對方的信箱內(nèi),且存儲在對方的電子郵箱中。接收者可在他認為方便的時候讀取信件,不受時空限制。在這里,“發(fā)送”郵件意味著將郵件放到收件人的信箱中,而“接收”郵件則意味著從自己的信箱中讀取信件,信箱實際上是由文件管理系統(tǒng)支持的個實體。因為電子郵件是通過郵件服務(wù)器(mai1server)來傳遞檔的。通常mailserver是執(zhí)行多任務(wù)操作系統(tǒng)UNIX的計算機,它提供24小時的電子郵件服務(wù),用戶只要向mailserver管理人員申請個信箱賬號,就可使用這項快速的郵件服務(wù)。
電子郵件的工作原理:
1)電子郵件系統(tǒng)是一種新型的信息系統(tǒng),是通信技術(shù)和計算機技術(shù)結(jié)合的產(chǎn)物。
電子郵件的傳輸是通過電子郵件簡單傳輸協(xié)議(SimpleMailTransferProtocol,簡稱SMTP)這一系統(tǒng)軟件來完成的,它是Internet下的一種電子郵件通信協(xié)議。
2)電子郵件的基本原理,是在通信網(wǎng)上設(shè)立“電子信箱系統(tǒng)”,它實際上是一個計算機系統(tǒng)。系統(tǒng)的硬件是一個高性能、大容量的計算機。硬盤作為信箱的存儲介質(zhì),在硬盤上為用戶分一定的存儲空間作為用戶的“信箱”,每位用戶都有屬于自己的個電子信箱。并確定個用戶名和用戶可以自己隨意修改的口令。存儲空間包含存放所收信件、編輯信件以及信件存盤三部分空間,用戶使用口令開啟自己的信箱,并進行發(fā)信、讀信、編輯、轉(zhuǎn)發(fā)、存檔等各種操作。系統(tǒng)功能主要由軟件實現(xiàn)。
3)電子郵件的通信是在信箱之間進行的。用戶首先開啟自己的信箱,然后通過鍵入命令的方式將需要發(fā)送的郵件發(fā)到對方的信箱中。郵件在信箱之間進行傳遞和交換,也可以與另個郵件系統(tǒng)進行傳遞和交換。收方在取信時,使用特定賬號從信箱提取。
當(dāng)前流行的各大郵件客戶端軟件的除了最主要的收發(fā)信件之外,功能越來越復(fù)雜,但是人們平常真正用到的功能很少,很多功能尤其對于那些計算機知識相對缺乏的人來說,更加顯得太過于華麗而不太實用。有鑒于此,在了解RFC底層協(xié)議的基礎(chǔ)上,我們開發(fā)了這個各種功能相對簡單實用的郵件客戶端程序,簡化了很多不必要的功能。軟件的總體架構(gòu)如圖:
發(fā)送郵件類接收郵件類主要功能選擇主界面
郵件發(fā)送:
是發(fā)送郵件的核心,類名為SmtpMail,隸屬于命名空間MailSend。封裝了發(fā)送郵件的具體實現(xiàn)方法,也是具體的RFC用代碼實現(xiàn)的過程。而用戶通過具體的操作接口,接口與SmtpMail類通過交互操作來實現(xiàn)用戶發(fā)送信件的操作。STMP協(xié)議以及工作原理:
由于要開發(fā)的是郵件客戶端程序,就不得不用到SMTP協(xié)議和POP協(xié)議。而我個人負責(zé)的是郵件發(fā)送功能的實現(xiàn),因此就必然會涉及到SMTP(SimpleMailTransferProtocol)協(xié)議。SMTP被用來在因特網(wǎng)上發(fā)送郵件,該協(xié)議規(guī)定了一些基本的命令和方法使客戶端與服務(wù)器進行交互,以達到發(fā)送郵件的目的。簡單郵件傳輸協(xié)議(SMTP)的目標是可靠高效地傳送郵件,它獨立于傳送子系統(tǒng)而且僅要求一條可以保證傳送數(shù)據(jù)單元順序的通道。
SMTP的一個重要特點是它能夠在傳送中接力傳送郵件,傳送服務(wù)提供了進程間通信環(huán)境(IPCE),此環(huán)境可以包括一個網(wǎng)絡(luò),幾個網(wǎng)絡(luò)或一個網(wǎng)絡(luò)的子網(wǎng)。理解到傳送系統(tǒng)(或IPCE)不是一對一的是很重要的。進程可能直接和其它進程通過已知的IPCE通信。郵件是一個應(yīng)用程序或進程間通信。郵件可以通過連接在不同IPCE上的進程跨網(wǎng)絡(luò)進行郵件傳送。更特別的是,郵件可以通過不同網(wǎng)絡(luò)上的主機接力式傳送。
SMTP命令定義了郵件傳輸或由用戶定義的系統(tǒng)功能。它的命令是由結(jié)束的字符串。而在帶有參數(shù)的情況下,命令本身由和參數(shù)分開,如果未帶參數(shù)可以直接和連接。郵箱的語法格式必須和接收站點的格式一致。下面討論SMTP命令和應(yīng)答。
發(fā)送郵件操作涉及到不同的數(shù)據(jù)對象,它們由不同的參數(shù)相互連接。回復(fù)路徑就是MAIL命令的參數(shù),而轉(zhuǎn)發(fā)路徑則是RCPT命令的參數(shù),郵件日期是DATA命令的參數(shù)。這些參數(shù)或者數(shù)據(jù)對象必須跟在命令后。這種模式也就要求有不同的緩沖區(qū)來存儲這些對象,也就是說,有一個回復(fù)路徑緩沖區(qū),一個轉(zhuǎn)發(fā)路徑緩沖區(qū),一個郵件內(nèi)容緩沖區(qū)。特定的命令產(chǎn)生自己的緩沖區(qū),或使一個或多個緩沖的內(nèi)容被清除。
HELLO(HELO)
此命令用于向接收SMTP確認發(fā)送SMTP。參數(shù)域包括發(fā)送SMTP的主機名。接收SMTP通過連接確認命令來向發(fā)送SMTP確認接收SMTP。引命令和OK響應(yīng)確認發(fā)送和接收SMTP進入了初始狀態(tài),也就是說,沒有操作正在執(zhí)行,所有狀態(tài)表和緩沖區(qū)已經(jīng)被子清除。
MAIL(MAIL)
此命令用于開始將郵件發(fā)送到一個多個郵箱中。參數(shù)域包括回復(fù)路徑。返回路徑中包括了可選的主機和發(fā)送者郵箱列表。當(dāng)有主機列表時,它是一個回復(fù)路徑源,它說明此郵箱是由在表中的主機一一傳遞發(fā)送(第一個主機是最后一個接收到此郵件的主機)過來的。此表也有作向發(fā)送者返回非傳遞信號的源路徑。因為每個傳遞主機地址都被加在此表起始處,它就必須使用發(fā)送IPCE而不是接收IPCE(如果它們不是一個IPCE的話)清楚的名稱。一些出錯信息的回復(fù)路徑可能就是空的。DATA(DATA)
接收者將跟在命令后的行作為郵件內(nèi)容。此命令導(dǎo)致此命令后的郵件內(nèi)容加入郵件內(nèi)容緩沖區(qū)。郵件內(nèi)容可以包括所有128個ASCII碼字符。郵件內(nèi)容由只包括一個句號的行結(jié)束,也就是如下的字符序列:".",它指示了郵件的結(jié)束。發(fā)送郵件類:SmtpMail
主要的函數(shù):SmtpMail()AddAttachment()GetStream()Base64Encode()SendCommand()RecvResponse()郵件的接受:
客戶端連接服務(wù)器成功后,服務(wù)器會返回以下信息:+OK……
字符+OK是POP3協(xié)議的返回信息。它的回應(yīng)信息不像SMTP協(xié)議那樣用豐富多變的數(shù)字表示,只有兩個:+OK或者-ERR。其中,+OK表示連接成功,而-ERR則表示連接失敗。
接下來,客戶端輸入USER
該命令告訴服務(wù)器你的用戶名。注意,有些服務(wù)器會區(qū)分大小寫字母的。服務(wù)器返回+OK后,客戶端輸入PASS
服務(wù)器返回+OK后,還返回一些郵箱的統(tǒng)計信息,比如:+OK1message(s)[1304byte(s)]
不同的服務(wù)器返回的信息格式不太一樣,所以我們可以用STAT命令來查看郵箱的情況。STAT命令的回應(yīng)中有兩個數(shù)字,分別表示郵件的數(shù)量和郵件的大小。
如果信箱里有信,就可以用RETR命令來獲取郵件的正文。RETR命令的格式為:
RETR
如果返回結(jié)果第一行是+OK信息,則表示成功。第二行起便是郵件的正文。最后一行和SMTP協(xié)議一樣,是一個單獨的英文句號,表示郵件的結(jié)尾部分。把郵件存儲起來后要用DELE命令刪除郵箱中的郵件,否則原有的郵件會繼續(xù)保留在服務(wù)器上,一旦郵件一多,你的郵箱就爆了。DELE命令的格式為:
DELE
如果刪錯了,可以用RSET命令來恢復(fù)所有已被刪除的郵件。條件是你還沒有退出,一旦退出,那就一切ByeBye了。全部完成以后,輸入QUIT命令就可以退出POP3服務(wù)器了。體統(tǒng)運行:
試驗總結(jié):
通過這次實訓(xùn),我學(xué)到了一些基本的網(wǎng)絡(luò)的一些服務(wù)的應(yīng)用,而我選擇的大作業(yè)是郵件的收發(fā)系統(tǒng),所以對郵件的一些處理更加深刻。要完成這個系統(tǒng),從SMTP協(xié)議規(guī)定的底層命令做起,一步步的與服務(wù)器進行交互操作,最終實現(xiàn)發(fā)送多附件多接收人的功能。其中,具體的和服務(wù)器的交互操作,都封裝了在SmtpMail.dll這個動態(tài)鏈接庫里面了。這個郵件收發(fā)系統(tǒng)相對來說比較簡單,以后的日子,隨著我技術(shù)的提高和思想的成熟,我一定會把它做的更好。
友情提示:本文中關(guān)于《郵件收發(fā)系統(tǒng)總結(jié)》給出的范例僅供您參考拓展思維使用,郵件收發(fā)系統(tǒng)總結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。