上篇博客我們簡(jiǎn)單介紹了電子郵件的發(fā)送和接收過(guò)程,對(duì)參與其中的郵件服務(wù)器,郵件客戶端軟件,郵件傳輸協(xié)議也有簡(jiǎn)單的介紹。我們知道電子郵件需要在郵件客戶端和郵件服務(wù)器之間,以及兩個(gè)郵件服務(wù)器之間進(jìn)行傳遞必須遵守的規(guī)則便是郵件傳輸協(xié)議。smtp協(xié)議定義了郵件客戶端軟件和smtp郵件服務(wù)器之間,以及兩臺(tái)smtp郵件服務(wù)器之間的通信規(guī)則。pop3/imap協(xié)議定義了郵件客戶端軟件和pop3郵件服務(wù)器的通信規(guī)則。這篇博客我們就來(lái)手工體驗(yàn)smtp和pop3協(xié)議的奧秘。
1、使用smtp協(xié)議手工發(fā)送郵件
smtp協(xié)議:全稱為 simple mail transfer protocol,簡(jiǎn)單郵件傳輸協(xié)議。它定義了郵件客戶端軟件和smtp郵件服務(wù)器之間,以及兩臺(tái)smtp郵件服務(wù)器之間的通信規(guī)則。smtp協(xié)議的通信雙方采用一問(wèn)一答的命令/響應(yīng)形式進(jìn)行對(duì)話,smtp協(xié)議分為標(biāo)準(zhǔn)smtp協(xié)議和擴(kuò)展smtp協(xié)議,標(biāo)準(zhǔn)smtp協(xié)議是1982年在rfc821 文檔中定義的,而擴(kuò)展smtp協(xié)議是1995年在rfc1869 文檔中定義的。擴(kuò)展smtp協(xié)議在標(biāo)準(zhǔn) smtp協(xié)議基礎(chǔ)上的改動(dòng)非常小,主要增加了郵件安全方面的認(rèn)證功能,現(xiàn)在我們說(shuō)的smtp協(xié)議基本上都是擴(kuò)展smtp協(xié)議。
rfc1869文檔參考如下:https://tools.ietf.org/html/rfc1869
smtp 協(xié)議中一共定義了18條命令,但是發(fā)送一封電子郵件的過(guò)程通常只需要6條命令,我將這6調(diào)命令/響應(yīng)的語(yǔ)法格式總結(jié)如下:
大家可能光看這些命令不太清楚,下面我總結(jié)了一下使用smtp協(xié)議手工發(fā)送郵件的步驟:
①、和smtp服務(wù)器建立連接,telnet smtp.163.com 25。這條命令是和163郵箱建立連接,如果是和qq,那么將163換成qq即可,同理別的郵箱也是一樣。后面的數(shù)字25表示smtp服務(wù)器的端口號(hào)。
②、ehlo 發(fā)件人用戶名。這沒(méi)什么好說(shuō)的,就是告訴smtp服務(wù)器發(fā)送者的用戶名。
③、選擇登錄認(rèn)證方式,一般我們?cè)诘诙綀?zhí)行完后,會(huì)提示有幾種認(rèn)證方式,我們一般選擇的是login。即輸入命令:auth login
④、分別輸入經(jīng)過(guò)base64加密后的用戶名和密碼。注意必須是要經(jīng)過(guò) base64加密后的用戶名和密碼,大家可以網(wǎng)上在線轉(zhuǎn),也可以用后面給的代碼進(jìn)行轉(zhuǎn)換。
⑤、指明郵件的發(fā)送人和收件人
mail from:<[email protected]>
rcpt to:<[email protected]>
⑥、輸入data命令,然后編寫要發(fā)送的郵件內(nèi)容,郵件的編寫格式規(guī)則如下:
第一步:輸入data
第二步:輸入郵件內(nèi)容
from:<[email protected]> ----郵件頭發(fā)件人地址
to:<[email protected]> ----郵件頭收件人地址
subject:hello world ----郵件頭主題
-----空行
this is the first email sent by hand using the smtp protocol ----郵件的具體內(nèi)容
⑦、輸入“.”表示郵件內(nèi)容輸入完畢
⑧、輸入quit命令斷開(kāi)與郵件服務(wù)器的連接
下面我用動(dòng)圖的形式給大家展示用smtp協(xié)議手工發(fā)送郵件的前面三個(gè)步驟:
上面我執(zhí)行到第4步,剩下的步驟我就直接截圖了:
至此,我們一封郵件便發(fā)出去了,我們先登陸到qq郵箱查看(后面我們通過(guò)pop3服務(wù)器來(lái)查收):
2、smtp發(fā)送郵件遇到問(wèn)題
①、執(zhí)行 telent smtp.163.com 25 命令時(shí),報(bào)如下錯(cuò)誤:
解決辦法是:控制面板----程序------啟動(dòng)或關(guān)閉 windows 功能----將telnet勾上,然后點(diǎn)擊確定即可
②、用戶名和密碼必須要base64加密
③、每一步驟之間輸入命令要盡量快,不然會(huì)自動(dòng)斷開(kāi)連接
④、我上面是和163郵箱鏈接的,如果是和qq郵箱連接,會(huì)有一些問(wèn)題。首先第一步建立連接為 telnet smtp.qq.com 587,端口號(hào)為587,不是25。還有第三步,選擇認(rèn)證方式,在執(zhí)行 auth login之前,先執(zhí)行:starttls。還有第四步,輸入用戶名和授權(quán)碼,而不是用戶名和密碼,授權(quán)碼的獲取可以參考:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
⑤、輸入郵件內(nèi)容時(shí),空行不要忘記了,還有結(jié)束輸入是以“.”結(jié)束的。
3、使用pop3協(xié)議手工接收郵件
郵件服務(wù)商專門為每個(gè)用戶申請(qǐng)的電子郵箱提供了專門的存儲(chǔ)空間,smtp 服務(wù)器將接收到的郵件保存到相應(yīng)用戶的存儲(chǔ)空間。用戶要從郵件服務(wù)提供商提供的電子郵箱中獲取自己的電子郵件,那么就需要pop3 郵件服務(wù)器來(lái)完成。
pop3協(xié)議:全稱為 post office protocol,它定義了郵件客戶端程序和pop3郵件服務(wù)器的通信規(guī)則。
下面我們演示用pop3協(xié)議手工接收郵件:
這是在 163 郵箱的一份郵件。(這里沒(méi)有用qq郵箱演示是因?yàn)閝q有很多安全限制,步驟比較繁瑣,大家遇到問(wèn)題了可以留言問(wèn)我)
第一步:用telnet 連接pop3的163郵箱服務(wù)器
接下來(lái)收取郵件:
相關(guān)命令的詳細(xì)解釋如下:
4、總結(jié)
上面就是通過(guò)smtp協(xié)議發(fā)送郵件,以及通過(guò)pop3協(xié)議收取郵件的全部過(guò)程。上面我們操作的主體都是163郵箱,換成sina,sohu等郵箱都是可以的。除了qq郵箱會(huì)有各種問(wèn)題,其中一些問(wèn)題我已經(jīng)在文中給出了,大家如果還遇到什么問(wèn)題,歡迎留言交流。
理解手工實(shí)現(xiàn)smtp和pop3收發(fā)郵件是很重要的,下篇博客會(huì)講如何通過(guò)代碼來(lái)實(shí)現(xiàn)收發(fā)郵件,以及后面內(nèi)嵌圖片,網(wǎng)站等花式寫郵件的講解。如果我們這篇博客理解透徹了,后面的內(nèi)容理解起來(lái)就會(huì)事半功倍了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:http://www.cnblogs.com/ysocean/p/7653252.html