程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> SMTP協議簡介(SimpleMailTransferProtocol)

SMTP協議簡介(SimpleMailTransferProtocol)

編輯:VB綜合教程
SMTP被用來在因特網上傳遞電子郵件。文件RFC821規定了該協議的所有細節。但是你只須記住下面的內容--該協議的基本命令和方法就行了。
  
  協議的原理很簡單。無非是一個客戶端計算機向服務器發送命令,然後服務器向客戶端計算機返回一些信息。客房端發送的命令以及服務器的回應都是字符串,你並不需要特別的軟件就能讀出它們。如果你仔細看過WinsockTerminal示例程序的源代碼,你就會發現這一點。現在讓我們用這個示例程序來向自己發一封電子郵件吧。
  
  運行示例程序,單擊"Connect"按鈕,在"Connectto..."對話框中輸入你的電子郵件服務器的地址,選擇SMTP選項。最後按"Connect"按鈕。如果連接成功,Winsock控件會產生Connected事件,在狀態欄中也可看到連接成功的信息。在主文本窗口中你將看到從服務器返回的文本。該文本包含一個三位數的代碼及描述,例如:
  
  220-ns.cinfo.ruSendmail8.6.12/8.6.9readyatWed,22Apr199822:54:41 0300
  220ESMTPspokenhere
  
  不必太過留意這些描述。因為這些描述可能會因服務器而異。你只須要知道代碼所代表的意思就行了。代碼220表示成功建立連接,服務器等待你的第一個命令。
  
  向服務器傳遞的第一個命令是HELO.該命令包含一個參數,即你的郵箱名。
  
  HELOoleg
  
  注意:在RFC821中,HELO是一個可選擇性命令,如果服務器不要求該命令的話,你可以把它忽略掉。
  
  如果命令成功,服務器會返回一個代碼為250的回應。下一步用MAILFROM命令告訴服務器你想發一封郵件。該命令以發信人的郵件地址為參數。
  
  MAILFROM:[email protected]
  
  發完命令後,如果服務器返回一個代碼為250回應,你就可以向服務器發送RCPTTO命令了。該命令以收信人地址為參數,一看便知是告訴服務器你想將郵件發到收信人地址處。
  
  RCPTTO:[email protected]
  
  如果你想將郵件發給多個收件人的話。你需要多次使用RCPTTO命令,對每個命令,服務器都會返回代碼為250的回應。
  
  現在你可以向服務器發送郵件正文了。用DATA命令告訴服務器以下的內容為郵件正文。在你從服務器收到代碼為354的回應後,你就可以發送郵件正文了。郵件按行發送,每行郵件以一個無回車的換行符結束(在VB中就是vbLf)示例程序知道何時使用換行符,何時使用回車加換行符。所以你只須按回車鍵就行了。下面是一個例子:
  
  Subject:Myfirste-mailmessage.
  
  Firstlineofamessage.
  Secondline.
  .
  
  注意上面最後一行的最後一個字符是一個小數點。這是正文結束的標志。用VB代碼表示就是vbLf&"."&vbCrLf.服務器收到這個標志後,就會立即向你返回一個代碼為250的回應以及該郵件的唯一ID號。
  
  250WAA10568Messageacceptedfordelivery
  
  任務完成了,你可以繼續發送下封郵件,也可以斷開同服務器的連接。如果要斷開同服務器的連接就用QUIT命令。在這種情況下,服務器會返回一個代碼為221的回應並斷開連接。
  
  QUIT
  221ns.cinfo.ruclosingconnection->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved