linux系統(tǒng)郵件客戶端開發(fā)_第1頁
linux系統(tǒng)郵件客戶端開發(fā)_第2頁
linux系統(tǒng)郵件客戶端開發(fā)_第3頁
linux系統(tǒng)郵件客戶端開發(fā)_第4頁
linux系統(tǒng)郵件客戶端開發(fā)_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

LINUX系統(tǒng)郵件客戶端開發(fā)摘要在日常的生活中,書信往來是我們?nèi)粘I钪胁豢扇鄙俚囊粋€環(huán)節(jié)。隨著INTERNET的普及,傳統(tǒng)信件的INTERNET版本電子郵件已經(jīng)逐漸步入了我們的生活與工作。但是,目前大多數(shù)電子郵件客戶端收發(fā)軟件都功能多樣,實現(xiàn)復雜,也或多或少的存在一些缺陷與兼容性等問題。這樣的程序在嵌入式等小型化載體上運行十分不便。并且,網(wǎng)絡上流行的自制電子郵件客戶端收發(fā)模塊也多是基于WINDOWS操作系統(tǒng)下的集成開發(fā)環(huán)境編寫,很難直接應用到LINUX系統(tǒng)中。本文對于LINUX系統(tǒng)設(shè)計一種簡易電子郵件收發(fā)客戶端。本文首先研究了郵件客戶端在LINUX中的應用。隨后,講解了與電子郵件相關(guān)的各項協(xié)議,包括與發(fā)送郵件相關(guān)的簡單郵件傳輸協(xié)議SMTP(ESMTP),與接收郵件相關(guān)的郵局協(xié)議POP3,以及對它們進行補充的通用因特網(wǎng)擴充協(xié)議MIME。重點編寫并完成了對SMTP和POP3協(xié)議的相關(guān)郵件處理和報文解析。設(shè)計中使用了QTC編程技術(shù),完成了用戶圖形界面編寫與顯示。查詢了LINUX相關(guān)磁盤文件操作函數(shù)要求,通過硬盤文件進行前后臺程序的消息傳遞,將電子郵件客戶端收發(fā)模塊最終整合起來。本文最后運行簡易電子郵件客戶端收發(fā)模塊,并對其進行了多項測試,完成了電子郵件的收發(fā)功能,可以實現(xiàn)在網(wǎng)絡中的郵件傳輸通信。關(guān)鍵詞電子郵件客戶端;LINUX;SMTPPOP3QTLINUXSYSTEMMAILCLIENTDEVELOPMENTABSTRACTINDAILYLIFE,THECORRESPONDENCEISANINDISPENSABLELINKINOURDAILYLIFEWITHTHEPOPULARITYOFINTERNET,THEINTERNETVERSIONOFTHETRADITIONALLETTERS,EMAILHASGRADUALLYSTEPPEDINTOOURLIFEANDWORKBUT,ATPRESENTMOSTOFTHESENDANDRECEIVEEMAILCLIENTSOFTWAREFUNCTIONALDIVERSITY,COMPLEX,ALSOTHEREARESOMEMOREORLESSDEFECTSANDCOMPATIBILITYANDSOONSUCHPROGRAMSRUNONSMALLERMACHINEISVERYINCONVENIENTPOPULARHOMEMADEEMAILCLIENTANDNETWORKTRANSCEIVERMODULEISALSOBASEDONTHEINTEGRATEDDEVELOPMENTENVIRONMENTTOWRITEUNDERTHEWINDOWSOPERATINGSYSTEM,ITISDIFFICULTTODIRECTLYAPPLYTOTHELINUXSYSTEMTHISPAPERFORLINUXSYSTEMDESIGNASIMPLEANDEASYTOSENDANDRECEIVEEMAILCLIENTTHISPAPERSTUDIEDTHEMAILCLIENTAPPLICATIONINLINUXTHEN,EXPLAINEDTHEEMAILRELATEDAGREEMENTS,INCLUDINGTHESIMPLEMAILTRANSFERPROTOCOLASSOCIATEDWITHEMAILSMTPESMTP,POSTOFFICEPROTOCOLRELATEDTORECEIVEEMAILPOP3,ANDTOSUPPLEMENTTHEIRGENERALINTERNETEXPANDAGREEMENTMIMEFOCUSONWRITINGANDCOMPLETEDTHESMTPANDPOP3PROTOCOLSOFTHEMESSAGEPROCESSINGANDMESSAGEPARSINGUSEDINTHEDESIGNOFTHEQTCPROGRAMMINGTECHNOLOGY,COMPLETEDTHEUSERTOCOMPOSEANDDISPLAYAGRAPHICALINTERFACEWITHTHEATTENTIONTOREQUIREMENTOFLINUXDOCUMENTOPERATIONONDISK,THECLIENTMODULEISASSEMBLEDVIAFILECOMMUNICATIONBETWEENDAEMONANDFOREGROUNDPROGRAMTHISARTICLEFINALLYRUNSIMPLEEMAILCLIENTTRANSCEIVERMODULE,ANDHAVEDONEMANYTESTS,COMPLETEDTHEEMAILTOSENDANDRECEIVEFUNCTION,CANREALIZEMAILTRANSFERINNETWORKCOMMUNICATIONKEYWORDSEMAILCLIENTLINUXSMTPPOP3QT目錄摘要IABSTRACTII1緒論111電子郵件收發(fā)軟件的歷史與現(xiàn)狀1111電子郵件收發(fā)軟件的歷史1112電子郵件收發(fā)軟件的現(xiàn)狀212電子郵件簡介2121電子郵件原理2122電子郵件工作過程2123電子郵件地址格式3124電子郵件特點4125電子郵件系統(tǒng)413本文的主要研究內(nèi)容與組織結(jié)構(gòu)5131本文的主要研究內(nèi)容5131本文的組織結(jié)構(gòu)52電子郵件客戶端可行性分析621研究課題的意義622可行性報告6221編寫目地6222背景6223需求7224目標7225開發(fā)語言與環(huán)境的選擇7226條件與限制8227可行性結(jié)論83系統(tǒng)的總體設(shè)計931系統(tǒng)總體構(gòu)成932發(fā)送郵件933后臺電子郵件傳輸協(xié)議的實現(xiàn)1034前臺用戶界面的顯示114后臺電子郵件傳輸協(xié)議的實現(xiàn)1241操作系統(tǒng)的選用1242LINUX套接字SOCKET編程13421安全套階層協(xié)議簡介13422SSL協(xié)議環(huán)境搭建1443網(wǎng)絡應用層編程16431郵件的發(fā)送處理16432郵件的接收處理18433報文的收發(fā)處理19434編解碼的處理22435主機IP地址和時間的獲取245前臺用戶顯示界面的實現(xiàn)2551QT界面顯示模塊的實現(xiàn)25511QT對象間的通信25512QT界面設(shè)計2652前后臺連接模塊的實現(xiàn)29521QLINEEDIT組件后臺函數(shù)29522QPUSHBUTTON組件后臺函數(shù)32523其他組件后臺函數(shù)336設(shè)計模塊的測試與結(jié)果3461MIME協(xié)議發(fā)送測試和結(jié)果3462SSL協(xié)議加密后端口測試35結(jié)論36參考文獻37致謝38外文文獻原文39外文文獻翻譯481緒論11電子郵件收發(fā)軟件的歷史與現(xiàn)狀111電子郵件收發(fā)軟件的歷史電子郵件(標志,也被大家昵稱為“伊妹兒”),是種用電子手段提供信息交換的通信方式,是互聯(lián)網(wǎng)應用最廣的服務。通過網(wǎng)絡的電子郵件系統(tǒng),用戶可以以非常低廉的價格(不管發(fā)送到哪里,都只需負擔網(wǎng)費)、非常快速的方式(幾秒鐘之內(nèi)可以發(fā)送到世界上任何指定的目的地),與世界上任何一個角落的網(wǎng)絡用戶聯(lián)系。電子郵件可以是文字、圖像、聲音等多種形式。同時,用戶可以得到大量免費的新聞、專題郵件,并實現(xiàn)輕松的信息搜索。電子郵件的存在極大的方便了人與人之間的溝通與交流,促進了社會的發(fā)展。起源對于世界上第一封電子郵件EMAIL,根據(jù)資料,有兩種說法電子郵件第一種說法1969年10月世界上的第一封電子郵件是由計算機科學家LEONARDK教授發(fā)給他的同事的一條簡短消息。據(jù)互聯(lián)網(wǎng)周刊報道世界上的第一封電子郵件是由計算機科學家LEONARDK教授發(fā)給他的同事的一條簡短消息時間應該是1969年10月,這條消息只有兩個字母“LO”。LEONARDK教授因此被稱為電子郵件之父。LEONARDK教授解釋,“當年我試圖通過一臺位于加利福尼亞大學的計算機和另一臺位于舊金山附近斯坦福研究中心的計算機聯(lián)系。我們所做的事情就是從一臺計算機登錄到另一臺計算機。當時登錄的辦法就是鍵入LOG。于是我方鍵入L,然后問對方收到L了嗎對方回答收到了。然后依次鍵入O和G。還未收到對方收到G的確認回答,系統(tǒng)就癱瘓了。所以第一條網(wǎng)上信息就是LO,意思是你好”第二種說法1971年,美國國防部資助的阿帕網(wǎng)正在如火如荼的進行當中,一個非常尖銳的問題出現(xiàn)了參加此項目的科學家們在不同的地方做著不同的工作,但是卻不能很好地分享各自的研究成果。原因很簡單,因為大家使用的是不同的計算機,每個人的工作對別人來說都是沒有用的。他們迫切需要一種能夠借助于網(wǎng)絡在不同的計算機之間傳送數(shù)據(jù)的方法。為阿帕網(wǎng)工作的麻省理工學院博士RAYTOMLINSON把一個可以在不同的電腦網(wǎng)絡之間進行拷貝的軟件和一個僅用于單他使用這個軟件在阿帕網(wǎng)上發(fā)送了第一封電子郵件,收件人是另外一臺電腦上的自己。盡管這封郵件的內(nèi)容連TOMLINSON本人也記不起來了,但那一刻仍然具備了十足的歷史意義電子郵件誕生了。TOMLINSON選擇“符號作為用戶名與地址的間隔,因為這個符號比較生僻,不會出現(xiàn)在任何一個人的名字當中,而且這個符號的讀音也有著“在“的含義。阿帕網(wǎng)的科學家們以極大的熱情歡迎了這個石破天驚般的創(chuàng)新。他們天才的想法及研究成果,現(xiàn)在可以用最快的快得難以覺察速度來與同事共享了。許多人回想起來,都覺得阿帕網(wǎng)所獲得的巨大成功當中,電子郵件功不可沒。(這個說法也是較為廣傳的。)雖然電子郵件是在70年代發(fā)明的,它卻是在80年才得以興起。70年代的沉寂主要是由于當時使用ARPANET網(wǎng)絡的人太少,網(wǎng)絡的速度也僅為目前56KBPS標準速度的二十分之一。受網(wǎng)絡速度的限制,那時的用戶只能發(fā)送些簡短的信息,根本別想象現(xiàn)在那樣發(fā)送大量照片;到80年代中期,個人電腦興起,電子郵件開始在電腦迷以及大學生中廣泛傳播開來;到90年代中期,互聯(lián)網(wǎng)瀏覽器誕生,全球網(wǎng)民人數(shù)激增,電子郵件被廣為使用。112電子郵件收發(fā)軟件的現(xiàn)狀時至今日,GOOGLE與幾個大型的網(wǎng)絡公司都有提供免費或者是付費的郵件服務器,其中,免費的電子郵件賬號甚至已經(jīng)提供高達數(shù)個GB的郵件儲存量對于一般用戶來說真是非常夠用了而對于企業(yè)級的大客戶,一般選擇在IDC中搭建自己的郵件服務器,由專人負責日常的維護。而網(wǎng)絡辦公平臺OA的興起,也在逐步弱化電子郵件的地位。未來充滿了未知,電子郵件的前景尚不明朗。12電子郵件簡介121電子郵件原理1、電子郵件的發(fā)送和接收電子郵件在INTERNET上發(fā)送和接收的原理可以很形象地用我們?nèi)粘I钪朽]寄包裹來形容當我們要寄一個包裹時,我們首先要找到任何一個有這項業(yè)務的郵局,在填寫完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的郵局,那么對方取包裹的時候就必須去這個郵局才能取出。同樣的,當我們發(fā)送電子郵件時,這封郵件是由郵件發(fā)送服務器(任何一個都可以)發(fā)出,并根據(jù)收信人的地址判斷對方的郵件接收服務器而將這封信發(fā)送到該服務器上,收信人要收取郵件也只能訪問這個服務器才能完成。2、電子郵件地址的構(gòu)成電子郵件地址的格式由三部分組成。第一部分“USER”代表用戶信箱的帳號,對于同一個郵件接收服務器來說,這個帳號必須是唯一的;第二部分“”是分隔符;第三部分是用戶信箱的郵件接收服務器域名,用以標志其所在的位置。122電子郵件工作過程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)進行傳遞和交換。收方在取信時,使用特定帳號從信箱提取。電子郵件的工作過程遵循客戶服務器模式。每份電子郵件的發(fā)送都要涉及到發(fā)送方與接收方,發(fā)送方構(gòu)成客戶端,而接收方構(gòu)成服務器,服務器含有眾多用戶的電子信箱。發(fā)送方通過郵件客戶程序,將編輯好的電子郵件向郵局服務器(SMTP服務器)發(fā)送。郵局服務器識別接收者的地址,并向管理該地址的郵件服務器(POP3服務器)發(fā)送消息。郵件服務器識將消息存放在接收者的電子信箱內(nèi),并告知接收者有新郵件到來。接收者通過郵件客戶程序連接到服務器后,就會看到服務器的通知,進而打開自己的電子信箱來查收郵件。通常INTERNET上的個人用戶不能直接接收電子郵件,而是通過申請ISP主機的一個電子信箱,由ISP主機負責電子郵件的接收。一旦有用戶的電子郵件到來,ISP主機就將郵件移到用戶的電子信箱內(nèi),并通知用戶有新郵件。因此,當發(fā)送一條電子郵件給一另一個客戶時,電子郵件首先從用戶計算機發(fā)送到ISP主機,再到INTERNET,再到收件人的ISP主機,最后到收件人的個人計算機。ISP主機起著“郵局”的作用,管理著眾多用戶的電子信箱。每個用戶的電子信箱實際上就是用戶所申請的帳號名。每個用戶的電子郵件信箱都要占用ISP主機一定容量的硬盤空間,由于這一空間是有限的,因此用戶要定期查收和閱讀電子信箱中的郵件,以便騰出空間來接收新的郵件。123電子郵件地址格式DOMAIN_NAME為域名的標識符,也就是郵件必須要交付到的郵件目的地的域名。而SOMEBODY則是在該域名上的郵箱地址。后綴一般則代表了該域名的性質(zhì),與地區(qū)的代碼。域名真正從技術(shù)上而言是一個郵件交換機,而不是一個機器名。常見的電子郵件協(xié)議有以下幾種SMTP(簡單郵件傳輸協(xié)議)、POP3(郵局協(xié)議)、IMAP(INTERNET郵件訪問協(xié)議)。這幾種協(xié)議都是由TCP/IP協(xié)議族定義的。SMTP(SIMPLEMAILTRANSFERPROTOCOL)SMTP主要負責底層的郵件系統(tǒng)如何將郵件從一臺機器傳至另外一臺機器。POP(POSTOFFICEPROTOCOL)版本為POP3,POP3是把郵件從電子郵箱中傳輸?shù)奖镜赜嬎銠C的協(xié)議。IMAP(INTERNETMESSAGEACCESSPROTOCOL)版本為IMAP4,是POP3的一種替代協(xié)議,提供了郵件檢索和郵件處理的新功能,這樣用戶可以完全不必下載郵件正文就可以看到郵件的標題摘要,從郵件客戶端軟件就可以對服務器上的郵件和文件夾目錄等進行操作。IMAP協(xié)議增強了電子郵件的靈活性,同時也減少了垃圾郵件對本地系統(tǒng)的直接危害,同時相對節(jié)省了用戶察看電子郵件的時間。除此之外,IMAP協(xié)議可以記憶用戶在脫機狀態(tài)下對郵件的操作(例如移動郵件,刪除郵件等)在下一次打開網(wǎng)絡連接的時候會自動執(zhí)行。在大多數(shù)流行的電子郵件客戶端程序里面都集成了對SSL連接的支持。除此之外,很多加密技術(shù)也應用到電子郵件的發(fā)送接受和閱讀過程中。他們可以提供128位到2048位不等的加密強度。無論是單向加密還是對稱密鑰加密也都得到廣泛支持。124電子郵件特點簡單來說,即1傳播速度快2非常便捷3成本低廉4廣泛的交流對象5信息多樣化6比較安全125電子郵件系統(tǒng)電子郵件服務由專門的服務器提供,GMAIL,HOTMAIL,網(wǎng)易郵箱,新浪郵箱等郵箱服務也是建立在電子郵件服務器基礎(chǔ)上,但是大型郵件服務商的系統(tǒng)一般是自主開發(fā)或是對其他技術(shù)二次開發(fā)實現(xiàn)的。主要的電子郵件服務器主要有以下兩大塊一、基于UNIX/LINUX平臺的郵件系統(tǒng)1SENDMAIL郵件系統(tǒng)(支持SMTP)和DOVECOT郵件系統(tǒng)(支持POP3)SENDMAIL可以說是郵件的鼻祖,迄今為止有50多年的歷史。本當郵件是其中的一個典型代表2基于POSTFIX/QMAIL的郵件系統(tǒng)。POSTFIX/QMAIL技術(shù)是在SENDMAIL技術(shù)上發(fā)展起來的,迄今為止歷史不超過10年。如網(wǎng)易郵箱的MTA是電子處理軟件?;赑OSTFIX,YAHOO的郵箱是基于QMAIL系統(tǒng)。二基于WINDOWS平臺的郵件系統(tǒng)1微軟的EXCHANGE郵件系統(tǒng)。2IBMLOTUSDOMINO郵件系統(tǒng)。3SCALIX郵件系統(tǒng)。4ZIMBRA郵件系統(tǒng)。5MDEAMON郵件系統(tǒng)。其中EXCHANGE郵件系統(tǒng)由于和WINDOWS整合,便于管理。是在企業(yè)中使用數(shù)量最多的郵件系統(tǒng)。IBMLOTUSDOMINO則綜合功能較強,大型企業(yè)使用較多,基于POSTFIX的郵件系統(tǒng)則需要有較強的技術(shù)力量才能實現(xiàn),但是性能可以達到非常高,而且安全性很好,同時軟件是開源免費的。13本文的主要研究內(nèi)容與組織結(jié)構(gòu)131本文的主要研究內(nèi)容本文對電子郵件及相關(guān)網(wǎng)絡技術(shù)進行了初步的探索和研究。主要研究內(nèi)容包括以下幾個方面研究LINUX下電子郵件客戶端收發(fā)軟件實現(xiàn)的各種方法。研究電子郵件相關(guān)協(xié)議和編解碼技術(shù)。設(shè)計一種電子郵件客戶端收發(fā)模塊。131本文的組織結(jié)構(gòu)本設(shè)計基于LINUX系統(tǒng)下的QT集成開發(fā)環(huán)境編寫。組織結(jié)構(gòu)如下第二章對研究課題的意義及可行性進行分析,確定本軟件以目前的條件可以完成。第三章對系統(tǒng)的總體設(shè)計進行描述。首先對電子郵件的體系結(jié)構(gòu)進行了簡單的介紹,明確了本設(shè)計模塊在系統(tǒng)中的地位和作用。接著提出了系統(tǒng)的總體設(shè)計方案和依據(jù)。系統(tǒng)分兩大部分進行設(shè)計后臺電子郵件傳輸協(xié)議的實現(xiàn)和前臺可視用戶界面的顯示。第四章為后臺電子郵件傳輸協(xié)議實現(xiàn)部分的設(shè)計。該部分分為網(wǎng)絡接口層實現(xiàn)模塊、傳輸層實現(xiàn)模塊和應用層實現(xiàn)模塊三個層次進行設(shè)計。涉及操作系統(tǒng)的選用、SOCKET編程技術(shù),以及SMTP、POP3和MIME等多種電子郵件傳輸協(xié)議的應用。第五章對前臺可視用戶界面的顯示部分進行設(shè)計。該部分由界面顯示模塊和前后臺的連接模塊組成。其中,界面顯示模塊主要使用QT編程技術(shù),而前后臺的連接模塊主要涉及對磁盤文件的操作和管理。第六章對本設(shè)計中的各個子模塊進行了詳細測試,并給出了系統(tǒng)的總體運行結(jié)果。結(jié)論中對現(xiàn)有工作進行了總結(jié),并對簡易電子郵件客戶端接收模塊的實現(xiàn)提出了進行一步的構(gòu)想。2電子郵件客戶端可行性分析21研究課題的意義現(xiàn)有的電子郵件客戶端都是基于臺式機或筆記本平臺安裝的,使用時需大量調(diào)用系統(tǒng)類庫,資源消耗大,對于目前將程序向嵌入式等小型化載體進行遷移帶來許多不便。在日常的工作中,找不到一款簡單易用的,且支持企業(yè)內(nèi)部郵箱的手機客戶端。目前流行的嵌入式操作系統(tǒng)有WINDOWSCE、IOS、ANDROID和LINUX等。前兩者使用時會收取一定的費用,而后兩者作為開源的操作系統(tǒng),可以自由傳播和修改。而ANDROID是基于LINUX內(nèi)核的操作系統(tǒng),所以選擇LINUX操作系統(tǒng)作為簡易郵件客戶端的運行環(huán)境具有很好的擴展性?,F(xiàn)有的郵件客戶端軟件,多是基于WINDOWS操作系統(tǒng)編寫,無法直接應用于LINUX運行環(huán)境,這使得模塊設(shè)計時無法直接利用他人已經(jīng)編寫好的郵件收發(fā)程序。因此,自制一個運行在LINUX操作系統(tǒng)下的簡易電子郵件客戶端收發(fā)模塊成為必然。其次,由于是自主開發(fā)的電子郵件收發(fā)模塊,具有很高的可擴展性,未來可以很方便的添加目前流行的電子郵件推送功能,實現(xiàn)郵件接收的自動提醒?;蛘咴卩]件安全性方面,也可以非常簡單的實現(xiàn)僅基于客戶端的自定義垃圾郵件的濾除工作,或特定郵件的選擇接收功能。并且結(jié)合系統(tǒng)已安裝的病毒查殺軟件,還可以自動完成郵件接收后的嵌入式軟件病毒掃描功能等,為加強電子郵件的安全性和可靠性提供參考意見。22可行性報告221編寫目地通過本可行性研究報告得出此軟件能否開發(fā),可否供試用。222背景所建議開發(fā)的軟件系統(tǒng)的名稱LINUX系統(tǒng)郵件客戶端開發(fā)。開發(fā)者太原理工大學軟件工程2010級1017班焦浩。用戶所有需要簡易郵件發(fā)送客戶端的用戶。223需求功能實現(xiàn)電子郵件及附件的發(fā)送。性能要求客戶端界面簡單實用,發(fā)送郵件快速便捷。224目標主要開發(fā)目標開發(fā)完成后,用此客戶端可以實現(xiàn)電子郵件,通過SSL連接,SMTP協(xié)議發(fā)字符串。通過發(fā)送服務器將郵件發(fā)送至郵件接收服務器,并確保用戶能收到電子郵件。225開發(fā)語言與環(huán)境的選擇開發(fā)語言選擇為C,C語言的有點如下C設(shè)計成靜態(tài)類型、和C同樣高效且可移植的多用途程序設(shè)計語言。C設(shè)計直接的和廣泛的支持多種程序設(shè)計風格(程序化程序設(shè)計、資料抽象化、面向?qū)ο蟪绦蛟O(shè)計、泛型程序設(shè)計)。C設(shè)計無需復雜的程序設(shè)計環(huán)境。C語言簡潔靈活,運算符的數(shù)據(jù)結(jié)構(gòu)豐富、具有結(jié)構(gòu)化控制語句、程序執(zhí)行效率高,而且同時具有高級語言與匯編語言的優(yōu)點,與其它語言相比,C語言具有可以直接訪問物理地址的優(yōu)點,與匯編語言相比又具有良好的可讀性的可移植性??偟脕碚f,C語言的主要特點表現(xiàn)在兩個方面,一是盡量兼容C,二是支持面向?qū)ο蟮姆椒?。它操持了C的簡潔、高效的接近匯編語言等特點,對C的類型系統(tǒng)進行了改革的擴充,因此C比C更安全,C的編譯系統(tǒng)能檢查出更多的類型錯誤。另外,由于C語言的廣泛使用,因而極大的促進了C的普及和推廣。C語言最有意義的方面是支持面向?qū)ο蟮奶卣?。雖然與C的兼容使得C具有雙重特點,但他在概念上完全與C不同,更具面向?qū)ο蟮奶卣?。出于保證語言的簡潔和運行高效等方面的考慮,C的很多特性都是以庫(如STL)或其他的形式提供的,而沒有直接添加到語言本身里。關(guān)于此類話題,BJARNESTROUSTRUP的C語言的設(shè)計和演化(1994)里做了詳盡的陳述。C引入了面向?qū)ο蟮母拍?,使得開發(fā)人機交互類型的應用程序更為簡單、快捷。很多優(yōu)秀的程序框架包括BOOST、QT、MFC、OWL、WXWIDGETS、WTL就是使用的C。開發(fā)壞境選擇QT521。QT是一個1991年由奇趣科技開發(fā)的跨平臺C圖形用戶界面應用程序開發(fā)框架。它既可以開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺工具和服務器。QT是面向?qū)ο蟮目蚣?,使用特殊的代碼生成擴展(稱為元對象編譯器METAOBJECTCOMPILER,MOC)以及一些宏,易于擴展,允許組件編程。2014年4月,跨平臺集成開發(fā)環(huán)境QTCREATOR310正式發(fā)布,實現(xiàn)了對于IOS的完全支持,新增WINRT、BEAUTIFIER等插件,廢棄了無PYTHON接口的GDB調(diào)試支持,集成了基于CLANG的C/C代碼模塊,并對ANDROID支持做出了調(diào)整,至此實現(xiàn)了全面支持IOS、ANDROID、WP。優(yōu)良的跨平臺特性QT支持下列操作系統(tǒng)MICROSOFTWINDOWS95/98,MICROSOFTWINDOWSNT,LINUX,SOLARIS,SUNOS,HPUX,DIGITALUNIXOSF/1,TRU64,IRIX,F(xiàn)REEBSD,BSD/OS,SCO,AIX,OS390,QNX等等。面向?qū)ο驫T的良好封裝機制使得QT的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常方便的。QT提供了一種稱為SIGNALS/SLOTS的安全類型來替代CALLBACK,這使得各個元件之間的協(xié)同工作變得十分簡單。豐富的APIQT包括多達250個以上的C類,還提供基于模板的COLLECTIONS,SERIALIZATION,F(xiàn)ILE,I/ODEVICE,DIRECTORYMANAGEMENT,DATE/TIME類。甚至還包括正則表達式的處理功能。支持2D/3D圖形渲染,支持OPENGL。大量的開發(fā)文檔。XML支持。226條件與限制硬件必須有一臺個人計算機開發(fā)環(huán)境QT521可利用的信息與資源網(wǎng)絡信息以及一些出版的書刊。227可行性結(jié)論由于進行開發(fā)研究的一些東西都是開源的,成本幾乎沒有。所以在技術(shù)、經(jīng)濟、操作上都具有高度的可行性,可以立即開始進行。3系統(tǒng)的總體設(shè)計31系統(tǒng)總體構(gòu)成預設(shè)計的簡單電子郵件客戶端發(fā)送模塊是一個軟件包。它包含郵件服務器的連接、用戶名密碼的驗證、SSL協(xié)議加密、收件人地址、郵件的文本信息及附件信息。圖31發(fā)送模塊工作流程32發(fā)送郵件要發(fā)送郵件,用戶首先通過客戶端界面創(chuàng)建郵件。圖形化界面文件QT中的UI提供在屏幕上顯示的模塊讓用戶填寫與選擇選項,來幫助用戶以規(guī)定的字段格式撰寫電子郵件報文。郵件撰寫完成后,由MTA客戶端以規(guī)定的郵件傳輸協(xié)議發(fā)送出去。電子郵件發(fā)送模塊連接SMTP服務器驗證郵件信息驗證成功,發(fā)送成功33后臺電子郵件傳輸協(xié)議的實現(xiàn)OSI是一個開放性的通行系統(tǒng)互連參考模型,他是一個定義的非常好的協(xié)議規(guī)范。OSI模型有7層結(jié)構(gòu),每層都可以有幾個子層。OSI的7層從上到下分別是7應用層6表示層5會話層4傳輸層3網(wǎng)絡層2數(shù)據(jù)鏈路層1物理層其中高層,即7、6、5、4層定義了應用程序的功能,下面3層,即3、2、1層主要面向通過網(wǎng)絡的端到端的數(shù)據(jù)流。應用層(APPLICATIONLAYER)與其它計算機進行通訊的一個應用,它是對應應用程序的通信服務的。例如,一個沒有通信功能的字處理程序就不能執(zhí)行通信的代碼,從事字處理工作的程序員也不關(guān)心OSI的第7層。但是,如果添加了一個傳輸文件的選項,那么字處理器的程序員就需要實現(xiàn)OSI的第7層。示例TELNET,HTTP,FTP,NFS,SMTP等。表示層(PRESENTATIONLAYER)這一層的主要功能是定義數(shù)據(jù)格式及加密。例如,F(xiàn)TP允許你選擇以二進制或ASCII格式傳輸。如果選擇二進制,那么發(fā)送方和接收方不改變文件的內(nèi)容。如果選擇ASCII格式,發(fā)送方將把文本從發(fā)送方的字符集轉(zhuǎn)換成標準的ASCII后發(fā)送數(shù)據(jù)。在接收方將標準的ASCII轉(zhuǎn)換成接收方計算機的字符集。示例加密,ASCII等。會話層(SESSIONLAYER)它定義了如何開始、控制和結(jié)束一個會話,包括對多個雙向消息的控制和管理,以便在只完成連續(xù)消息的一部分時可以通知應用,從而使表示層看到的數(shù)據(jù)是連續(xù)的,在某些情況下,如果表示層收到了所有的數(shù)據(jù),則用數(shù)據(jù)代表表示層。示例RPC,SQL等。傳輸層(TRANSPORTLAYER)這層的功能包括是否選擇差錯恢復協(xié)議還是無差錯恢復協(xié)議,及在同一主機上對不同應用的數(shù)據(jù)流的輸入進行復用,還包括對收到的順序不對的數(shù)據(jù)包的重新排序功能。示例TCP,UDP,SPX。網(wǎng)絡層(NETWORKLAYER)這層對端到端的包傳輸進行定義,它定義了能夠標識所有結(jié)點的邏輯地址,還定義了路由實現(xiàn)的方式和學習的方式。為了適應最大傳輸單元長度小于包長度的傳輸介質(zhì),網(wǎng)絡層還定義了如何將一個包分解成更小的包的分段方法。示例IP,IPX等。數(shù)據(jù)鏈路層(DATALINKLAYER)它定義了在單個鏈路上如何傳輸數(shù)據(jù)。這些協(xié)議與被討論的各種介質(zhì)有關(guān)。示例ATM,F(xiàn)DDI等。物理層(PHYSICALLAYER)OSI的物理層規(guī)范是有關(guān)傳輸介質(zhì)的特性標準,這些規(guī)范通常也參考了其他組織制定的標準。連接頭、幀、幀的使用、電流、編碼及光調(diào)制等都屬于各種物理層規(guī)范中的內(nèi)容。物理層常用多個規(guī)范完成對所有細節(jié)的定義。示例RJ45,8023等。34前臺用戶界面的顯示前臺用戶界面顯示模塊由界面編程和前后臺連接兩個模塊組成。界面顯示模塊界面文件)提供友好的圖形用戶界面,允許用戶使用鍵盤和鼠標與系統(tǒng)進行交互。本文使用QT軟件設(shè)計,撰寫郵件功能設(shè)計為彈出式對話框操作。當用戶發(fā)送成功成功時,會提示發(fā)送郵件成功。而如果無法完成郵件的正常發(fā)送,則提示連接出現(xiàn)錯誤。前后臺連接模塊是前后臺消息通信的接口,主要完成界面顯示數(shù)據(jù)與后臺郵件操作信息的統(tǒng)一,及時完成對信件的存儲或顯示界面的更新。4后臺電子郵件傳輸協(xié)議的實現(xiàn)41操作系統(tǒng)的選用LINUX是當今發(fā)展最為迅速并引起最多關(guān)注的操作系統(tǒng)之一。作為一種自由軟件,任何人都可以從網(wǎng)上取得它的源代碼并按照自己的要求進行修改。LINUX支持廣大的硬件平臺,它的裝機量的增長率超過別的操作系統(tǒng),而且許多著名的軟件公司、計算機公司都宣布生產(chǎn)和LINUX靠攏的產(chǎn)品。LINUX操作系統(tǒng)在短短幾年內(nèi)得到了迅速的發(fā)展,這與LINUX的良好特性是分不開的,LINUX包含了UNIX的全部功能和特性。具體而言包括如下幾個方面1開放性開放性是指系統(tǒng)遵循開放系統(tǒng)互連OSI國際標準。凡遵循該標準所開發(fā)的軟件和硬件,都可以彼此兼容,并方便的實現(xiàn)互聯(lián)。2多用戶多用戶是指系統(tǒng)資源可以被不同的用戶各自擁有使用,即每個用戶對自己的資源如文件、設(shè)備,有特定的權(quán)限,互不影響。3多任務多任務是現(xiàn)代計算機的最重要的一個特點。它是指計算機在同一時間內(nèi)可以執(zhí)行多個程序,并且程序之間不互相妨礙。LINUX采用搶占調(diào)度多任務的方式,即每個程序都一直運行到操作系統(tǒng)搶占CPU讓其它程序運行為止。這使得用戶可以充分的利用計算機資源。4豐富的網(wǎng)絡功能LINUX在通信和網(wǎng)絡功能方面優(yōu)于其它的操作系統(tǒng)。因為LINUX中包含了緊密的和內(nèi)核連接在一起的連接網(wǎng)絡的能力。其網(wǎng)絡功能主要包括大量支持INTERACT的軟件、已有的簡潔的文件傳輸和遠程訪問功能。5可靠的系統(tǒng)安全LINUX采取了許多安全技術(shù)措旌,包括對讀、寫進行權(quán)限控制、帶保護的子系統(tǒng)、審計跟蹤、核心授權(quán)等,這為網(wǎng)絡多用戶環(huán)境中的用戶提供了必要的安全保障。6良好的可移植性LINUX是一種可移植的操作系統(tǒng),能夠從微機到大型計算機的任何環(huán)境和任何平臺上運行,可移植性為運行LINUX的不同計算機平臺與其它任何機器進行準確而有效的通信提供了手段?;谝陨咸攸c,簡易郵件客戶端模塊平臺的確定正是利用了LINUX系統(tǒng)強大的網(wǎng)絡功能和優(yōu)良的可移植性以及可靠的系統(tǒng)安全性,并為今后將程序向嵌入式等小型化載體進行遷移打下堅實的基礎(chǔ)。LINUX不像WINDOWS操作系統(tǒng),它不是一個由一家商業(yè)公司維護的軟件,只有一個包裝。LINUX是可以任意包裝自由配置的東西。任何一個人,一家公司都可以按照自己的想法,比如加一點功能,如多種語言支持等,做一個LINUX發(fā)布套件出來。這些LINUX發(fā)布套件雖然核心部分都一樣,但是他們所帶的各種軟件,缺省的配置都不一樣。區(qū)別比如用一種LINUX發(fā)布套件硬件容易配置,各種軟件也好安裝,用另外一種發(fā)布套件也許執(zhí)行速度快,再一種也許支持中文比較好。所以從一開始選擇發(fā)布套件就必須非常小心,否則很容易重新返工。42LINUX套接字SOCKET編程421安全套階層協(xié)議簡介電子郵件在傳輸層使用TCP進行傳輸,使用TCP傳輸就是建立一個連接。在TCP的傳輸中一個連接由兩個端點組成,一個連接代表的是發(fā)送和接收兩端應用程序之間的一個通信。通常,一個連接使用公式HOST,PORT表示,HOST是主機,PORT是端口。對于程序員而言所說的TCP端口實際是數(shù)據(jù)端口的概念,這種端口其實是軟件端口應用程序。TCP端口能被幾個應用程序共享,可以理解為一個應用程序可以為不同的連接提供服務。TCP/IP中將端口分為兩部分一部分是保留端口即熟知端口,如TELNET使用23號端口。另一部分是自由端口,可以在通信之前進行申請。LINUX中小于1024的所有端口是保留給系統(tǒng)使用的,普通的進程應當使用大于1024且小于65535范圍內(nèi)的端口號。SMTP協(xié)議使用25號端口,POP3協(xié)議使用110號端。電子郵箱默認使用的TCP端口號如下表41電子郵箱默認端口協(xié)議作用純文本或加密會話單純文本會話單純加密會話POP3收郵件110995IMAP收郵件143993SMTP收郵件25465(非標準)MSA收郵件587套接字SOCKETS最早是作為BSD規(guī)范提出來的,并已成為LINUX操作系統(tǒng)下TCP/IP網(wǎng)絡編程標準,是進行程序間通信的一種方法。套接字是網(wǎng)絡通信的基本操作單元,它提供了不同主機間的進程雙向通信的端點,這些進程在通信前各自建立一個SOCKET,并通過對SOCKET的讀/寫操作實現(xiàn)網(wǎng)絡通信功能。LINUX提供3種類型的套接字流式套接字、數(shù)據(jù)報套接字、原始報套接字。電子郵件收發(fā)使用的是客戶端與服務器的通信模型。套接字編程均采用客戶端/服務器的協(xié)作模式,即由客戶進程向服務器進程發(fā)出請求,服務器進程執(zhí)行被請求的任務并將響應結(jié)果返回給客戶進程。本程序使用SSL安全套接層協(xié)議。SSLSECURESOCKETSLAYER安全套接層,及其繼任者傳輸層安全(TRANSPORTLAYERSECURITY,TLS)是為網(wǎng)絡通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS與SSL在傳輸層對網(wǎng)絡連接進行加密。SSL協(xié)議位于TCP/IP協(xié)議與各種應用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層SSL記錄協(xié)議(SSLRECORDPROTOCOL)它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。SSL握手協(xié)議(SSLHANDSHAKEPROTOCOL)它建立在SSL記錄協(xié)議之上,用于在實際的數(shù)據(jù)傳輸開始前,通訊雙方進行身份認證、協(xié)商加密算法、交換加密密鑰等。SSL協(xié)議所提供的服務有1)認證用戶和服務器,確保數(shù)據(jù)發(fā)送到正確的客戶機和服務器;2)加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊?。?)維護數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過程中不被改變。422SSL協(xié)議環(huán)境搭建本程序使用OPENSSL密碼庫。OPENSSL是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協(xié)議,并提供豐富的應用程序供測試或其它目的使用。OPENSSL采用C語言作為開發(fā)語言,這使得OPENSSL具有優(yōu)秀的跨平臺性能,這對于廣大技術(shù)人員來說是一件非常美妙的事情,可以在不同的平臺使用同樣熟悉的東西。OPENSSL支持LINUX、WINDOWS、BSD、MAC、VMS等平臺,這使得OPENSSL具有廣泛的適用性。但習慣C語言總比使用C重新寫一個跟OPENSSL相同功能的軟件包輕松不少?;竟δ躉PENSSL整個軟件包大概可以分成三個主要的功能部分SSL協(xié)議庫、應用程序以及密碼算法庫。OPENSSL的目錄結(jié)構(gòu)自然也是圍繞這三個功能部分進行規(guī)劃的。作為一個基于密碼學的安全開發(fā)包,OPENSSL提供的功能相當強大和全面,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的應用程序供測試或其它目的使用。輔助功能BIO機制是OPENSSL提供的一種高層IO接口,該接口封裝了幾乎所有類型的IO接口,如內(nèi)存訪問、文件訪問以及SOCKET等。這使得代碼的重用性大幅度提高,OPENSSL提供API的復雜性也降低了很多。OPENSSL對于隨機數(shù)的生成和管理也提供了一整套的解決方法和支持API函數(shù)。隨機數(shù)的好壞是決定一個密鑰是否安全的重要前提。OPENSSL還提供了其它的一些輔助功能,如從口令生成密鑰的API,證書簽發(fā)和管理中的配置文件機制等等。如果你有足夠的耐心,將會在深入使用OPENSSL的過程慢慢發(fā)現(xiàn)很多這樣的小功能,讓你不斷有新的驚喜。功能OPENSSL的應用程序已經(jīng)成為了OPENSSL重要的一個組成部分,其重要性恐怕是OPENSSL的開發(fā)者開始沒有想到的。如OPENCA,就是完全使用OPENSSL的應用程序?qū)崿F(xiàn)的。OPENSSL的應用程序是基于OPENSSL的密碼算法庫和SSL協(xié)議庫寫成的,所以也是一些非常好的OPENSSL的API使用范例,讀懂所有這些范例,你對OPENSSL的API使用了解就比較全面了,當然,這也是一項鍛煉你的意志力的工作。OPENSSL的應用程序提供了相對全面的功能,在相當多的人看來,OPENSSL已經(jīng)為自己做好了一切,不需要再做更多的開發(fā)工作了,所以,他們也把這些應用程序成為OPENSSL的指令。OPENSSL的應用程序主要包括密鑰生成、證書管理、格式轉(zhuǎn)換、數(shù)據(jù)加密和簽名、SSL測試以及其它輔助配置功能。機制ENGINE機制ENGINE機制的出現(xiàn)是在OPENSSL的096版的事情,開始的時候是將普通版本跟支持ENGINE的版本分開的,到了OPENSSL的097版,ENGINE機制集成到了OPENSSL的內(nèi)核中,成為了OPENSSL不可缺少的一部分。ENGINE機制目的是為了使OPENSSL能夠透明地使用第三方提供的軟件加密庫或者硬件加密設(shè)備進行加密。OPENSSL的ENGINE機制成功地達到了這個目的,這使得OPENSSL已經(jīng)不僅僅使一個加密庫,而是提供了一個通用地加密接口,能夠與絕大部分加密庫或者加密設(shè)備協(xié)調(diào)工作。當然,要使特定加密庫或加密設(shè)備OPENSSL協(xié)調(diào)工作,需要寫少量的接口代碼,但是這樣的工作量并不大,雖然還是需要一點密碼學的知識。ENGINE機制的功能跟WINDOWS提供的CSP功能目標是基本相同的。包括CRYPTOSWIFT、NCIPHER、ATALLA、NURON、UBSEC、AEP、SUREWARE以及IBM4758CCA的硬件加密設(shè)備。當然,所有上述ENGINE接口支持不一定很全面,比如,可能支持其中一兩種公開密鑰算法。WIN32OPENSSL安裝項目是致力于提供一個簡單的安裝OPENSSL。很容易通過簡單的設(shè)置和使用方便,有效的安裝程序。不需要編譯或跳過任何步驟,只需點擊幾次安裝,讓你做真正的工作。下載完成后無需編譯,直接將BIN目錄下的一些DLL文件復制在QT目錄的BIN目錄下即可。圖41OPENSSL文件復制43網(wǎng)絡應用層編程為了交付郵件,電子郵件處理系統(tǒng)必須使用唯一的編址系統(tǒng)。因特網(wǎng)的郵件地址包括兩個部分本地部分和域名,并且用符號分隔開。本地部分定義了一個特殊文件的名字,叫做用戶郵箱。在用戶郵箱中存儲了所有收到的用戶郵件,以便用戶代理進行讀取。地址的第二部分是域名,一個組織通常選擇一個或多個主機來接收和發(fā)送電子郵件,這些主機通常叫做郵件服務器或郵件交換器MAILEXCHANGER。指派給每一個郵件交換器的域名或者來自DNS數(shù)據(jù)庫,或者是一個邏輯名字例如該組織的名字。431郵件的發(fā)送處理1簡單郵件傳送協(xié)議SMTPSMTP(SIMPLEMAILTRANSFERPROTOCOL)即簡單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。SMTP協(xié)議屬于TCP/IP協(xié)議族,它幫助每臺計算機在發(fā)送或中轉(zhuǎn)信件時找到下一個目的地。通過SMTP協(xié)議所指定的服務器,就可以把EMAIL寄到收信人的服務器上了,整個過程只要幾分鐘。SMTP服務器則是遵循SMTP協(xié)議的發(fā)送郵件服務器,用來發(fā)送或中轉(zhuǎn)發(fā)出的電子郵件。圖42SMTP使用模型SMTP簡單郵件傳輸協(xié)議(SIMPLEMAILTRANSFERPROTOCOL),是定義郵件傳輸最常用的協(xié)議,它是基于TCP服務的應用層協(xié)議,由RFC2821所定義。SMTP協(xié)議規(guī)定的命令是以明文方式進行的。為了說明SMTP的工作原理,我們以向163發(fā)送郵件為實例進行說明。在LINUX環(huán)境下,使用“TELNETSMTP163COM25“連接SMTP163COM的25號端口(SMTP的標準服務端口);在WINDOWS下使用TELNET程序,遠程主機指定為SMTP163COM,而端口號指定為25,然后連接SMTP163COM交互過程如下SMTPLIXNSLIXTELNETSMTP163COM25220163COMANTISPAMGTFORCOREMAILSYSTEM163COM071018HELOSMTP163COM250OKAUTHLOGIN334DXNLCM5HBWU6USERBASE64加密后的用戶名334UGFZC3DVCMQ6PASSBASE64加密后的密碼235AUTHENTICATIONSUCCESSFULMAILFROMXXX163COM250MAILOKRCPTTOXXX163COM250MAILOKDATA354ENDDATAWITHQUITSMTP250MAILOKQUEUEDASSMTP5,D9GOWLARIZFIFTPIXFX8AA41385S2HELO是客戶向?qū)Ψ洁]件服務器發(fā)出的標識自己的身份的命令,這里假設(shè)發(fā)送者為IDEAL;MAILFROM命令用來表示發(fā)送者的郵件地址;RCPTTO標識接收者的郵件地址,這里表示希望發(fā)送郵件給XXX163COM,如果郵件接收者不是本地用戶,例如RCPTTOIDEAL,則說明希望對方郵件服務器為自己轉(zhuǎn)發(fā)(RELAY)郵件,若該機器允許轉(zhuǎn)發(fā)這樣的郵件,則表示該郵件服務器是OPENRELAY的,否則說明該服務器不允許RELAY;DATA表示下面是郵件的數(shù)據(jù)部分,輸入完畢以后,以一個“開始的行作為數(shù)據(jù)部分的結(jié)束標識;QUIT表示退出這次會話,結(jié)束郵件發(fā)送。這就是一個簡單的發(fā)送郵件的會話過程,其實當使用OUTLOOKEXPRESS等客戶軟件發(fā)送時,后臺進行的交互也是這樣的,當然,SMTP協(xié)議為了處理復雜的郵件發(fā)送情況如附件等等,定義了很多的命令及規(guī)定,具體可以通過閱讀RFC2821來獲得。2擴展簡單郵件協(xié)議ESMTPESMTPEXTENDEDSMTP,是擴展SMTP就是對標準SMTP協(xié)議進行的擴展。它與SMTP服務的區(qū)別僅僅是,使用SMTP發(fā)信不需要驗證用戶帳戶,而用ESMTP發(fā)信時,服務器會要求用戶提供用戶名和密碼以便驗證身份。在所有的驗證機制中,信息全部采用BASE64編碼。驗證之后的郵件發(fā)送過程與SMTP方式?jīng)]有兩樣。3郵件的組成格式創(chuàng)建的電子郵件包含信封和報文兩部分。1信封信封通常包含發(fā)件人地址、收件人地址以及其他信息。信封部分由前面描述的SMTP協(xié)議以命令的形式發(fā)送。2報文報文包含首部和主體兩個部分。報文的首部定義發(fā)件人、收件人、報文的主題,以及一些其他信息。報文的主體包含收件人將要讀取的真正內(nèi)容。報文的首部和主體兩個部分之間用空行分隔,否則郵件服務器無法加以區(qū)分。信件主體的格式較為簡單,僅為預發(fā)送的內(nèi)容陳述。首部結(jié)構(gòu)比較復雜,是多個字段的組合,這些字段為接收服務器和收件人提供了關(guān)于信件的基本顯示信息。4郵件的發(fā)送編程電子郵件的傳送共有3個階段連接建立、郵件傳送和連接終止。郵件的發(fā)送需及時對MTA服務器返回的代碼進行匹配比較,若代碼不是預期的正確應答,發(fā)送將不能正確執(zhí)行。對郵件的信封部分發(fā)送時,需要檢測報文首都中的抄送字段CC的有無,若該字段非空,則應反復調(diào)用RCPTTO指令直到該字段關(guān)鍵詞后的所有期望的收件地址都被通知至服務器端。圖43電子郵件發(fā)送流程432郵件的接收處理1郵局協(xié)議版本3POP3MAA客戶端和MAA服務器之間通常使用兩種通信協(xié)議郵局協(xié)議版本3POP3和因特網(wǎng)郵件讀取協(xié)議版本4IMAP4。它們都用于郵件的收取過程之中。雖然IMAP4協(xié)議功能比POP3協(xié)議的更為強大,但是由于其實現(xiàn)的復雜程度,在目前的實踐中依然未受到廣泛的應用。因此,本設(shè)計采用POP3協(xié)議從服務器獲取郵件,對IMAP4協(xié)議不再進行深入的探討。POP3也使用的命令和響應的形式在客戶端和服務器之間進行通信。協(xié)議包含12條命令,三種工作狀態(tài),即認證狀態(tài)AUTHORIZATIONSTATE、處理狀態(tài)TRANSACTIONSTATE以及更新狀態(tài)UPDATESTATE。命令的格式也是“關(guān)鍵詞參數(shù)”形式,不同的命令帶有不同的參數(shù),適用于不同的狀態(tài)。POP3擁有兩種認證方式USERPASS機制和APOP機制。USERPASS認證機制要求用戶端以明文方式依次輸入郵箱名稱和密碼。當許多客戶經(jīng)常連接到服務器檢查信件時,訪問間隔時間較短,使用USERPASS機制會加大泄密的可能性,于是服務器提供了APOP命令進行認證以增加系統(tǒng)的安全性。APOP使用密鑰方式進行通信,但是這就需要服務器的配合工作,實現(xiàn)難度較高。2郵件的收取編程電子郵件的收取也有3個階段連接建立、郵件收取和連接終止。為利用遠程登陸TELNET功能通過端口110對郵件進行接收的過程,C為客戶端發(fā)送的指令或數(shù)據(jù),S為服務器的應答語句。收取郵件時,若設(shè)計模塊中的郵箱賬戶剛剛創(chuàng)建,則通過指令“UIDL”創(chuàng)建郵件標識符列表,并接收郵箱中的所有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論