下面通過(guò)一個(gè)實(shí)例進(jìn)行說(shuō)明。在本例中,假設(shè)郵件從名為panwei@163. com的發(fā)件人電子郵件箱(運(yùn)行SMTP客戶進(jìn)程,具體顯示為C)傳送到名為network@xmu. edu. cn的收件人電子信箱(運(yùn)行SMTP服務(wù)器進(jìn)程,具體顯示為S),具體的命令和響應(yīng)信息如下:telnetwww.example.com25它打開(kāi)一個(gè)從發(fā)送的機(jī)器到主機(jī)www.example.com的SMTP連接。
以上所示的是一個(gè)簡(jiǎn)單的SMTP交換過(guò)程,包括了連接建立、郵件傳送和連接釋放三個(gè)具體過(guò)程:首先建立TCP連接,SMTP調(diào)用TCP協(xié)議的25號(hào)端口監(jiān)聽(tīng)連接請(qǐng)求,客戶端發(fā)送HEl。()命令以標(biāo)識(shí)發(fā)件人自己的身份,服務(wù)器做出響應(yīng)。然后,客戶端發(fā)送MAII)命令,服務(wù)器以O(shè)K作為Ⅱ向應(yīng),表明準(zhǔn)備接收。客戶端發(fā)送RCPT命令以標(biāo)識(shí)電子郵件的收件人,可以有多個(gè)RCPT行,即一份郵件可以同時(shí)發(fā)送給多個(gè)收件人。服務(wù)器端則表示是否愿意為收件人接收郵件。協(xié)商結(jié)束后,客戶端用DATA命令發(fā)送信息,以CRLF表示結(jié)束輸入內(nèi)容。最后,控制交互的任一端可選擇終止會(huì)話,為此它發(fā)出一個(gè)QUIT命令,另一端用命令221響應(yīng),表示同意終止連接,雙方將關(guān)閉連接。
SMTP交換過(guò)程中服務(wù)器端發(fā)出的u201c250 0Ku201d含義是一切都好。與使用其他協(xié)議一樣,程序只讀縮寫(xiě)命令和每行開(kāi)頭的三個(gè)數(shù)字,其余文本是用于幫助用戶調(diào)試郵件軟件。在命令成功時(shí),服務(wù)器返回代碼250,如果失敗則返回代碼550(命令無(wú)法識(shí)別)、451(處理時(shí)出錯(cuò))、452(存儲(chǔ)空間不夠)、421(服務(wù)器不可用)等,354則表示開(kāi)始信息輸入。
SMTP的局限性表現(xiàn)在只能發(fā)送ASCII碼格式的報(bào)文,不支持中文、法文、德文等,它也不支持語(yǔ)音、視頻的數(shù)據(jù)。通過(guò)MIME協(xié)議,對(duì)SMTP補(bǔ)充。MIME使用網(wǎng)絡(luò)虛擬終端(NVT)標(biāo)準(zhǔn),允許非ASCII碼數(shù)據(jù)通過(guò)SMTP傳輸。