郵件開發:SMTP協議詳解

恆奇恆毅發表於2016-01-07

SMTP命令及格式

說    

Ehlo<SP><domain><CRLF>

ehlo命令是SMTP郵件傳送程式與SMTP郵件接收程式建立連線後必須傳送的第一條SMTP命令,引數<domain>表示SMTP郵件傳送者的主機名。ehlo命令用於替代傳統SMTP協議中的helo命令。

Auth<SP><para><CRLF>

如果SMTP郵件接收程式需要SMTP郵件傳送程式進行認證時,它會向SMTP郵件傳送程式提示它所採用的認證方式,SMTP郵件傳送程式接著應該使用這個命令回應SMTP郵件接收程式,引數<para>表示回應的認證方式,通常是SMTP郵件接收程式先前提示的認證方式。【PLAIN/LOGIN/】

Mail<SP>From:<reverse-path><CRLF>

此命令用於指定郵件傳送者的郵箱地址,引數<reverse-path>表示發件人的郵箱地址。可以不是自己的郵箱地址,可以偽裝

Rcpt<SP>To:<forword-path><CRLF>

此命令用於指定郵件接收者的郵箱地址,引數<forward-path>表示接收者的郵箱地址。如果郵件要傳送給多個接收者,那麼應使用多條Rcpt<SP>To命令來分別指定每一個接收者的郵箱地址。

Data<CRLF>

此命令用於表示SMTP郵件傳送程式準備開始傳送郵件內容,在這個命令後面傳送的所有資料都將被當作郵件內容,直至遇到“<CRLF><CRLF>”識別符號,則表示郵件內容結束。

Quit<CRLF>

此命令表示要結束郵件傳送過程,SMTP郵件接收程式接收到此命令後,將關閉與SMTP郵件傳送程式的網路連線。


Ehlo相當與helo2sinasmtp服務通訊的客戶端有兩種型別,一種是普通使用者,一種是其他郵件伺服器,sinasmtp伺服器要區分出這兩種客戶,對普通使用者要詢問密碼,對其他郵件伺服器則不要密碼,以mail.csdn.net做個實驗看看。

輸入命令時,特別是email地址,要用<>括起來,不要按程式設計的習慣,先寫完一對括號,再回來填寫括號中的內容,這樣傳送給伺服器的內容並不是你看到的內容,而是按你輸入的順序將字元逐一傳送給伺服器。

郵件閱讀程式所顯示的發件人和smtp協議中所使用的發件人可以不同的,就像信封上寫的發件人和實際將信件投放給郵件的人可以不同,例如,我給你寫的信,可以讓我愛人去投遞。作為郵件接收者來說,特別是一些重要的郵件,不要輕易相信閱讀程式顯示的發件人,例如,有人可以在mail from和郵件內容中的from頭中冒充你女朋友。






相關文章