該測試在mac下進行
- 安裝telnet
目的: 使用telnet登錄SMTP服務器
在早前的版本中懦鼠,mac是自帶telnet的拓巧。但最新的系統(tǒng)已經移除了telnet,你可以在/usr/bin/telnet
目錄下查看是否存在。如果想安裝可以有以下兩種方法:
- 復制一份舊系統(tǒng)的文件,參考https://blog.csdn.net/max_zhanglei/article/details/80803825
- 通過命令安裝:
- 如果已經安裝
homebrew
妻率,則直接在終端輸入$brew install telnet
- 如果沒有安裝
homebrew
, 則在終端輸入以下兩條命令:
$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
$brew install telnet
- 登錄SMTP服務器
$telnet smtp.126.com 25
SMTP使用的是TCP的25號端口不翩。這里我們鏈接網易126郵箱服務器,你也可以替換為其他郵箱服務器酸休,例如
telnet smtp.qq.com 25
。不過騰訊郵箱需要設置驗證碼祷杈,比較麻煩斑司。
鏈接成功后,終端會返回以下信息:
220 126.com Anti-spam GT for Coremail System (126com[20140526])
其中220表示服務就緒但汞,后面緊跟著郵箱服務器的域名126.com xxxxx
宿刮。
- 開始通訊
helo xxx
通訊的第一條語句必須是helo xxx
,其中xxx
可以是任意輸入私蕾,一般為自己的郵箱名就可以僵缺。
服務器會返回250 OK
- 登錄126郵箱
auth login
服務器會返回334 dXNlcm5hbWU6
,其中dXNlcm5hbWU6
為base64編碼的username
。此時我們輸入郵箱賬戶的base64編碼即可:
Y29uZTE5OIDAMMI2LmNvbQ==
然后按回車結束踩叭。
同樣的磕潮,服務器返回334 UGFzc3dvcmQ6
,這次是password
容贝。我們輸入密碼的base64自脯,然后回車。
如果一切順利斤富,則服務器返回235 Authentication successful
膏潮,表示登錄成功。
設置發(fā)件人
輸入mail from:<aaa@126.com>
并回車
服務器會返回250 Mail OK
設置收件人
輸入rcpt to:<bbb@126.com>
并回車
服務器同樣返回250 Mail OK
設置正文
輸入data
并回車
服務器返回354 End data with <CR><LF>.<CR><LF>
满力,表示我們可以開始輸入正文戏罢,并且最終要以回車.回車
的形式結束屋谭。
這里在輸入data
并回車后,我們先不忙輸入龟糕,繼續(xù)往下看。
8.在輸入正文前悔耘,我們往往希望設置標題讲岁,附件,格式等等衬以,此時就需要MIME了缓艳。
MIME
MIME
全稱是Multipurpose Internet Mail Extensions
,是對文本格式郵件的一種擴展類型,現(xiàn)在不僅可以發(fā)送文本看峻,還可以發(fā)送靜態(tài)圖片阶淘、聲音、程序等各種形式的數(shù)據(jù)互妓。
MIME
還被用于WWW和NetNews中溪窒。
MIME
基本由首部和正文(數(shù)據(jù))兩部分組成。首部不能有空行冯勉,因為一旦出現(xiàn)空行澈蚌,其后的部分將被視為正文。如果MIME
首部的Content-Type
中指定Multipart/Mixed
,并以boundary=
后面字符作為分隔符灼狰,那么可以將多個MIME
消息組合成一個MIME
消息宛瞄,這就叫做multipart
。即各個部分都由MIME
首部和正文組成交胚。
下面列出具有代表性的Content-Type
:
Content-Type | 內容 |
---|---|
text/plain |
純文本 |
message/rfc822 |
MIME與正文 |
multipart/mixed |
多部分消息 |
application/postscript |
PostScript |
application/octet-stream |
二進制數(shù)據(jù) |
image/gif |
GIF圖像 |
image/jpeg |
JPEG圖像 |
audio/basic |
AU格式的音頻文件 |
video/mpeg |
MPEG動畫 |
message/external-body |
包含外部消息 |
一個典型的MIME
舉例:
- 輸入標題等等
在我們輸入data
并回車后份汗,我們需要做一些附加設置:
輸入以下文本,每輸入一行則回車蝴簇,注意不能有空行
To:bbb@126.com
Subject:hello friend!
Content-Type:text/plain;charset=utf8
From:aaa@126.com
以上設置了MIME
的首部杯活,為了和正文區(qū)分,我們再次鍵入空行军熏。
然后轩猩,我們直接輸入正文即可:
hello my friend! this is a test email.
正文輸入完畢,注意我們之前所說的荡澎,郵件必須以回車.回車
的方式結束均践,因此我們輸入
回車
.
回車
如果一切順利,服務器會返回我們一個回執(zhí)摩幔,告訴我們發(fā)送成功彤委。此時輸入quit
+回車
退出郵箱服務器。
現(xiàn)在或衡,你可以到發(fā)件箱去查看剛剛發(fā)送的郵件了!
后記:
- 通過
telnet
連接成功后焦影,必須輸入helo xxx
车遂,否則服務通訊失敗。 - 登錄后斯辰,必須設置發(fā)件人和收件人后才能設置
data
舶担,否則失敗。 - 如果不設置
MIME
彬呻,測試的時候發(fā)送不成功衣陶,被126退信,報錯為554
,認為是垃圾郵件闸氮。因此MIME
必須設置正確剪况。 - 正文的結束必須以
回車
+.
+回車
來結束。
SMTP
指令及含義:
指令 | 含義 |
---|---|
HELO <domain> |
開始通訊 |
EHLO <domain> |
開始通訊(擴展HELO) |
MAIL FROM:<reverse-path> |
發(fā)件人 |
RCPT TO:<forward-path> |
收件人 |
DATA |
郵件的正文 |
REST |
初始化 |
VRFY <string> |
確認用戶名 |
EXPN <string> |
將郵件組擴展為郵件列表 |
NOOP |
請求應答(no operation) |
QUIT |
關閉 |