計算機網(wǎng)絡學習筆記(二)手動發(fā)送/接收/刪除郵件


協(xié)議介紹 :


電子郵件是一個非常有用和"古老"的應用 , 目前情況下 , 它遵循了三種協(xié)議 :

  • SMTP協(xié)議
    • 主要應用于發(fā)送郵件 , 全稱為 : Simple Mail Transfer Protocol
  • POP3協(xié)議
    • 主要應用于接收郵件 , 全稱為 : Post Office Protocol - Version 3
  • IMAP協(xié)議
    • 一種比SMTP和POP協(xié)議都要新的協(xié)議 , 支持更多的功能和操作(對郵件的搜索等) , 主要應用于郵件的接收

實戰(zhàn)一 : (利用Telnet/nc手動發(fā)送郵件)


  1. Windows環(huán)境下 : (可以使用Telnet命令)
  • 首先我們需要打開Windows的Telnet功能 , 需要在控制面板-程序-啟用或關(guān)閉Windows功能-Telnet客戶端
  • 然后我們就可以使用Telnet命令 , 我們需要使用Telnet連接到我們的郵件服務器上 , 然后通過SMTP支持的命令進行郵件的發(fā)送
  • 這里我們使用163郵箱的smtp服務器 , 服務器的地址 : smtp.163.com , 端口25
  • 我們在命令行中輸入 : telnet smtp.163.com 25
  • 成功連接到163的SMTP服務器
  • 這里需要了解的是SMTP協(xié)議是 Command/Response 模式的 , 這個和HTTP協(xié)議有一點不同 , HTTP 協(xié)議基于 Request/Response
  • 這個時候我們需要輸入命令(Command)
  • 向服務器發(fā)送握手數(shù)據(jù)
  • HELO 163.com
  • 向服務器請求登陸
  • AUTH LOGIN
  • 輸入Base64編碼以后的用戶名
  • Base64(YourUsername) 注意這里的用戶名不包含 @163.com
  • 輸入Base64編碼以后的"密碼"
  • Base64(YourPassword) 注意這里的密碼并不是163郵箱的登陸密碼 , 而是需要你登陸網(wǎng)頁版的163郵箱打開SMTP服務的時候配置的密碼
  • 如果這個時候服務器返回成功 , 則說明我們已經(jīng)成功登陸
  • 然后我們就可以輸入發(fā)送郵件的命令了
  • 首先需要設置發(fā)送方
  • MAIL FROM: <Your Email Address> 例如 : 你的郵箱是 sunshine@163.com , 那么這里你要輸入的就是 MAIL FROM: <sunshine@163.com>
  • 設置接收方
  • RCPT TO: <Receiver's Email Address>
  • 然后輸入郵件 , 這里說的 郵件 包含兩個部分 , 郵件頭和郵件主 , 郵件頭中可以定義 : Subject , From , To 這些屬性 , 分別對應的就是 : 主題 發(fā)件人 收件人 , 郵件頭結(jié)束以后需要添加一個空行 , 用于分割郵件頭和郵件正文(主體) , 注意這里郵件的主體在結(jié)束的時候需要在一個空行中鍵入一個英文的句號. , 用來表示郵件已經(jīng)結(jié)束 , 最后鍵入回車換行即可提交給郵件服務器 , 加入郵件服務器的待發(fā)送隊列中 , 一般很快就會收到郵件
    Subject:Hello world!
    From:Your Email Address
    To:Receiver's Email Address
    
    Across the Great Wall we can reach every corner in the world.
    .
    
    
  • 然后屏幕就會顯示發(fā)送狀態(tài) , 如果發(fā)送成功會有ok的字樣 , 如果發(fā)送失敗 , 也會有錯誤碼 , 我們可以根據(jù)這個錯誤碼去查詢失敗的原因然后修正
  • 整個流程截圖如下 :


    1478179741976.png
  • 注意 : 下圖中的郵件頭和郵件主體(正文)之間少了一個空行 , 這樣的話會導致郵件的正文不能正常發(fā)送 , 發(fā)送后顯示正文為空 , 筆者之后才發(fā)現(xiàn) , 之前一直納悶這個問題 , 希望這張圖不要給大家誤導(已修復)


    Paste_Image.png
  • 這個時候我們就可以查看我們的郵箱 , 這里我使用了自己的163郵箱 , 將發(fā)件人和收件人都填寫成了同一個 , 我們登陸看看有沒有成功收到郵件 :


    1478189771068.png

    1478190164056.png
  1. Linux環(huán)境下 : (可以使用Telnet/nc命令)
  • Linux環(huán)境下 , 使用nc命令也是和Telnet非常類似 : nc smtp.163.com 25 , 然后成功登陸163的SMTP服務器之后的操作就和Windows完全沒有區(qū)別了 , Telnet也是和Windows沒有任何區(qū)別 , 這里不再贅述

實戰(zhàn)二 : (利用Telnet/nc手動接收并操作郵件 , 例如獲取所有郵件/刪除某個郵件等)


這次我們還是利用剛才的那個郵箱 , 我們首先登陸網(wǎng)頁客戶端來看一下郵箱里面的郵件列表


1478194719603.png

我們可以看到收件箱里面總共有三封郵件
我們現(xiàn)在開始使用命令來連接郵件服務器 , 并獲取收件箱列表 , 同樣 , 由于Windows和Linux系統(tǒng)在這里的操作并沒有什么區(qū)別 , 這里就直接使用Windows下的Telnet客戶端進行演示 :

  • 首先使用Telnet連接到郵件服務器(POP3)
  • Telnet pop3.163.com 110 POP3使用的默認端口是110
  • 連接成功后 , 進入交互界面 , 由于這里我們需要獲取用戶的收件箱列表 , 因此肯定需要一個認證的過程
  • User:YourUsername 用戶名是明文 , 不需要Base64編碼, 注意不要添加多余的空格
  • Pass:yourPassword 密碼是明文 , 不需要Base64編碼, 注意不要添加多余的空格
  • 如果認證成功的話 , 會有相應的提示 , 并且會顯示收件箱的郵件個數(shù) , 還有所有郵件的內(nèi)容長度總和
  • 現(xiàn)在我們可以對郵件的列表進行獲取
  • List
  • 這樣就會顯示收件箱中的所有郵件的編號和內(nèi)容長度
  • 可以使用Retr 郵件編號來獲取郵件的內(nèi)容 , 包括郵件頭 , 郵件正文
  • 可以使用Dele 郵件編號來刪除某個制定的郵件 , 注意 : 這里的刪除指的是 : 從服務器刪除
  • 可以使用Quit退出并斷開與服務器的連接
  • 截圖 :


    1478195826699.png

    1478196015622.png

    1478196054883.png

    Paste_Image.png

關(guān)于POP3和SMTP協(xié)議的命令還有很多 , 這里只介紹了最簡單常用的幾個 , 大家有興趣可以參考Wiki上的介紹 , 很詳細 , 也可以去參考RFC的官方文檔

SMTP狀態(tài)碼 :

Code 英文描述 中文描述
211 System status, or system help reply 系統(tǒng)狀態(tài)或顯示系統(tǒng)幫助讲逛。
214 Help message 顯示系統(tǒng)幫助召川,通常用于顯示非標準命令的幫助螟蒸。
220 Service ready 服務就緒瑟慈。
221 Service closing transmission channel 服務關(guān)閉了傳輸通道薪寓。
250 Requested mail action okay, completed 所要求的郵件動作完成半醉,可以繼續(xù)郵件對話谚中。通常在EHLO/HELO命令后會通過“250-”來描述服務器所支持的特性饰恕。
251 User not local; will forward to 收件人非本地用戶牲览,將轉(zhuǎn)發(fā)到 墓陈。
354 Start mail input; end with . 開始接收郵件內(nèi)容輸入,以.(即單行一個點)結(jié)束輸入第献。
421 Service not available, closing transmission channel 無法提供正常服務贡必,關(guān)閉傳輸管道。郵件保留在本地庸毫,可能會嘗試重新投遞仔拟。通常這種情況發(fā)生在服務器遇到問題,必須關(guān)閉傳輸飒赃。
450 Requested mail action not taken: mailbox unavailable 所要求的郵件動作無法執(zhí)行:郵箱不可用利花。郵件保留在本地科侈,可能會嘗試重新投遞。通常這種情況發(fā)生在郵箱忙或被拒絕等炒事。
451 Requested action aborted: local error in processing 要求動作中斷:本地端發(fā)生錯誤臀栈。郵件保留在本地,可能會嘗試重新投遞挠乳。通常這種情況發(fā)生在系統(tǒng)投遞時遇到意外的錯誤权薯。
452 Requested action not taken: insufficient system storage 要求動作無法執(zhí)行:系統(tǒng)空間不足。郵件保留在本地欲侮,可能會嘗試重新投遞崭闲。通常這種情況發(fā)生在郵箱限額滿肋联。
500 Syntax error, command unrecognized 命令格式錯誤威蕉,不可識別。當命令行太長時也會發(fā)生這樣的錯誤橄仍。
501 Syntax error in parameters or arguments 命令參數(shù)錯誤韧涨。
502 Command not implemented 命令尚未實現(xiàn)。
503 Bad sequence of commands 錯誤的命令順序侮繁。
504 Command parameter not implemented 命令的參數(shù)尚未實現(xiàn)虑粥。
550 Requested action not taken: mailbox unavailable 所要求動作無法執(zhí)行:信箱不存在。不再嘗試投遞宪哩。
551 User not local; please try 收件人不屬于本地用戶娩贷,轉(zhuǎn)發(fā)到。不再嘗試投遞锁孟。
552 Requested mail action aborted: exceeded storage allocation 所要求的動作中斷:超出所分配的儲存空間彬祖。不再嘗試投遞。
553 Requested action not taken: mailbox name not allowed 所要求的動作未執(zhí)行:不接受該信箱品抽。通常發(fā)生在郵件地址錯誤储笑、被作為垃圾郵件拒收。不再嘗試投遞圆恤。
554 Transaction failed 傳輸失敗突倍。

參考資料 :


  1. SMTP協(xié)議
  2. POP協(xié)議
  3. IMAP協(xié)議
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市盆昙,隨后出現(xiàn)的幾起案子羽历,更是在濱河造成了極大的恐慌,老刑警劉巖淡喜,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秕磷,死亡現(xiàn)場離奇詭異,居然都是意外死亡拆火,警方通過查閱死者的電腦和手機跳夭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門涂圆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來切端,“玉大人梦重,你說我怎么就攤上這事∏耄” “怎么了颈抚?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵踩衩,是天一觀的道長。 經(jīng)常有香客問我贩汉,道長驱富,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任匹舞,我火速辦了婚禮褐鸥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赐稽。我一直安慰自己叫榕,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布姊舵。 她就那樣靜靜地躺著晰绎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪括丁。 梳的紋絲不亂的頭發(fā)上荞下,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音史飞,去河邊找鬼尖昏。 笑死,一個胖子當著我的面吹牛祸憋,可吹牛的內(nèi)容都是我干的会宪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蚯窥,長吁一口氣:“原來是場噩夢啊……” “哼掸鹅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拦赠,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤巍沙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后荷鼠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體句携,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年允乐,在試婚紗的時候發(fā)現(xiàn)自己被綠了矮嫉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片削咆。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蠢笋,靈堂內(nèi)的尸體忽然破棺而出拨齐,到底是詐尸還是另有隱情,我是刑警寧澤昨寞,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布瞻惋,位于F島的核電站,受9級特大地震影響援岩,放射性物質(zhì)發(fā)生泄漏歼狼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一享怀、第九天 我趴在偏房一處隱蔽的房頂上張望羽峰。 院中可真熱鬧,春花似錦凹蜈、人聲如沸限寞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至计雌,卻和暖如春悄晃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凿滤。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工妈橄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翁脆。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓眷蚓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親反番。 傳聞我的和親對象是個殘疾皇子沙热,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 一篙贸、郵件開發(fā)涉及到的一些基本概念 郵件服務器和電子郵箱 郵件傳輸協(xié)議 電子郵件的發(fā)送和接收過程 1.1郵件服務器和...
    yjaal閱讀 1,458評論 0 7
  • 五、電子郵件 1.電子郵件概述 一個電子郵件系統(tǒng)應具有三個主要組成構(gòu)件:用戶代理枫疆、郵件服務器爵川、郵件發(fā)送協(xié)議(如SM...
    dmmy大印閱讀 983評論 0 1
  • 本文包括:1、名詞解釋2息楔、郵件收發(fā)過程3寝贡、JavaMail 知識概要4扒披、發(fā)送一封符合 MIME 協(xié)議的 JavaM...
    廖少少閱讀 4,017評論 2 13
  • 街對面的新書店開張。 活動開始前圃泡,大家都在等待大人物出現(xiàn)谎碍,等待拍照,等待提問洞焙,以及朋友圈的發(fā)生蟆淀。 我在角落獨自站立...
    hawamega閱讀 730評論 0 1
  • 作者:11 冷月無聲作品:天下無騙 點評: 1.標題直接 對于當下熱點,我們的散發(fā)性思維總是有各種角度澡匪,這個看似平...
    尚武三寶閱讀 146評論 0 1