2019/3/5 11:48:38
SMTP被用(yòng)來在因特網上(shàng)傳遞電子郵件(jiàn)。文(wén)件(jiàn)RFC821規定了該協議的(de)所有(yǒu)細節。但(dàn)是你(nǐ)隻須記住下面的(de)内容--該協議的(de)基本命令和(hé)方法就行(xíng)了。
協議的(de)原理(lǐ)很簡單。無非是一個(gè)客戶端計(jì)算機向服務器(qì)發送命令,然後服務器(qì)向客戶端計(jì)算機返回一些信息。客房端發送的(de)命令以及服務器(qì)的(de)回應都(dōu)是字符串,你(nǐ)并不需要特别的(de)軟件(jiàn)就能(néng)讀(dú)出它們。如(rú)果你(nǐ)仔細看過WinsockTerminal示例程序的(de)源代碼,你(nǐ)就會(huì)發現這一點。現在讓我們用(yòng)這個(gè)示例程序來向自己發一封電子郵件(jiàn)吧(ba)。
運行(xíng)示例程序,單擊"Connect"按鈕,在"Connectto..."對話(huà)框中輸入你(nǐ)的(de)電子郵件(jiàn)服務器(qì)的(de)地(dì)址,選擇SMTP選項。最後按"Connect"按鈕。如(rú)果連接成功,Winsock控件(jiàn)會(huì)産生Connected事件(jiàn),在狀态欄中也(yě)可(kě)看到(dào)連接成功的(de)信息。在主文(wén)本窗口中你(nǐ)将看到(dào)從服務器(qì)返回的(de)文(wén)本。該文(wén)本包含一個(gè)三位數的(de)代碼及描述,例如(rú):
220-ns.cinfo.ruSendmail8.6.12/8.6.9readyatWed,22Apr199822:54:41+0300
220ESMTPspokenhere
不必太過留意這些描述。因爲這些描述可(kě)能(néng)會(huì)因服務器(qì)而異。你(nǐ)隻須要知道代碼所代表的(de)意思就行(xíng)了。代碼220表示成功建立連接,服務器(qì)等待你(nǐ)的(de)第一個(gè)命令。
向服務器(qì)傳遞的(de)第一個(gè)命令是HELO.該命令包含一個(gè)參數,即你(nǐ)的(de)郵箱名。
HELOoleg
注意:在RFC821中,HELO是一個(gè)可(kě)選擇性命令,如(rú)果服務器(qì)不要求該命令的(de)話(huà),你(nǐ)可(kě)以把它忽略掉。
如(rú)果命令成功,服務器(qì)會(huì)返回一個(gè)代碼爲250的(de)回應。下一步用(yòng)MAILFROM命令告訴服務器(qì)你(nǐ)想發一封郵件(jiàn)。該命令以發信人(rén)的(de)郵件(jiàn)地(dì)址爲參數。
MAILFROM:oleg@vbip.com
發完命令後,如(rú)果服務器(qì)返回一個(gè)代碼爲250回應,你(nǐ)就可(kě)以向服務器(qì)發送RCPTTO命令了。該命令以收信人(rén)地(dì)址爲參數,一看便知是告訴服務器(qì)你(nǐ)想将郵件(jiàn)發到(dào)收信人(rén)地(dì)址處。
RCPTTO:somebody@domain.com
如(rú)果你(nǐ)想将郵件(jiàn)發給多個(gè)收件(jiàn)人(rén)的(de)話(huà)。你(nǐ)需要多次使用(yòng)RCPTTO命令,對每個(gè)命令,服務器(qì)都(dōu)會(huì)返回代碼爲250的(de)回應。
現在你(nǐ)可(kě)以向服務器(qì)發送郵件(jiàn)正文(wén)了。用(yòng)DATA命令告訴服務器(qì)以下的(de)内容爲郵件(jiàn)正文(wén)。在你(nǐ)從服務器(qì)收到(dào)代碼爲354的(de)回應後,你(nǐ)就可(kě)以發送郵件(jiàn)正文(wén)了。郵件(jiàn)按行(xíng)發送,每行(xíng)郵件(jiàn)以一個(gè)無回車(chē)的(de)換行(xíng)符結束(在VB中就是vbLf)示例程序知道何時使用(yòng)換行(xíng)符,何時使用(yòng)回車(chē)加換行(xíng)符。所以你(nǐ)隻須按回車(chē)鍵就行(xíng)了。下面是一個(gè)例子:
Subject:Myfirste-mailmessage.
Firstlineofamessage.
Secondline.
.
注意上(shàng)面最後一行(xíng)的(de)最後一個(gè)字符是一個(gè)小(xiǎo)數點。這是正文(wén)結束的(de)标志。用(yòng)VB代碼表示就是vbLf&"."&vbCrLf.服務器(qì)收到(dào)這個(gè)标志後,就會(huì)立即向你(nǐ)返回一個(gè)代碼爲250的(de)回應以及該郵件(jiàn)的(de)唯一ID号。
250WAA10568Messageacceptedfordelivery
任務完成了,你(nǐ)可(kě)以繼續發送下封郵件(jiàn),也(yě)可(kě)以斷開(kāi)同服務器(qì)的(de)連接。如(rú)果要斷開(kāi)同服務器(qì)的(de)連接就用(yòng)QUIT命令。在這種情況下,服務器(qì)會(huì)返回一個(gè)代碼爲221的(de)回應并斷開(kāi)連接。
QUIT
221ns.cinfo.ruclosingconnection
深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04
咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967