最近在看《計(jì)算機(jī)網(wǎng)絡(luò)自頂向下方法》,初步了解了SMTP協(xié)議。嘗試用telnet登錄SMTP服務(wù)給自己的qq郵箱發(fā)送了一封郵件,中間踩了很多坑,現(xiàn)在把具體步驟總結(jié)如下:
1.打開終端,輸入telnet,回車
2.輸入o smtp.139.com 25,此處o是open的縮寫,以139郵箱為例,25表示SMTP服務(wù)器時(shí)刻監(jiān)聽的端口號,登錄SMTP服務(wù)器。服務(wù)器返回220 localhost richmail system v10(2eff5a1190ba8e2-ea850)表示成功
3.輸入HELO xxx,和服務(wù)器打招呼,xxx可以是任意內(nèi)容,確認(rèn)服務(wù)器應(yīng)答,服務(wù)器返回250 localhost richmail system v10(2eff5a1190ba8e2-ea850)表示成功
4.輸入auth login,請求登錄,服務(wù)器返回334 dXNlcm5hbWU6,334是成功的狀態(tài)碼,后面是 username: 的base64碼,可以在網(wǎng)上找到編碼和解碼工具
5.輸入轉(zhuǎn)換為base64碼后的發(fā)送郵箱的用戶名,不用帶郵件域名,服務(wù)器返回334 UGFzc3dvcmQ6,334是成功的狀態(tài)碼,后面是 password: 的base64碼
6.輸入轉(zhuǎn)換為base64碼后的發(fā)送郵箱的密碼,服務(wù)器返回235 Authentication successful表示登錄成功
7.輸入MAIL FROM:<發(fā)件人郵箱地址>,告訴服務(wù)器發(fā)信人的地址,服務(wù)器返回250 Mail OK表示成功
8.輸入RCPT TO:<收件人郵箱地址>,告訴服務(wù)器收信人的地址,服務(wù)器返回250 Mail OK表示成功
9.輸入DATA,開始寫郵件,服務(wù)器返回354 End data with .提示郵件以一個(gè)單獨(dú)占有一行的.結(jié)束
10.郵件格式如下:
To:收件人郵箱地址
From:發(fā)件人郵箱地址
Subject:郵件主題 //前三行是首部行
//首部行和報(bào)文體之間要有一個(gè)空行
郵件正文 //報(bào)文體
. //結(jié)束郵件的標(biāo)志
服務(wù)器返回250 ok表示發(fā)送成功,如果要繼續(xù)發(fā)送,則返回步驟7重復(fù)即可。
11.發(fā)送完所有郵件之后輸入QUIT,關(guān)閉TCP連接
下面是成功接收的郵件

注意幾個(gè)坑:
1.發(fā)件方使用的是139郵箱,嘗試qq郵箱和163郵箱開啟了SMTP服務(wù)也不成功,可能是基于安全性考慮進(jìn)行了限制
2.收件方郵箱如果有反垃圾機(jī)制,應(yīng)該事先關(guān)閉,否則會拒絕接收郵件