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