序言
對於大多數人來說,我想,接觸的第一個電子郵箱應該都是QQ郵箱。我也不例外,從第一次接觸QQ郵箱開始,就對這種有別於傳統郵箱的軟件產生了一些興趣,卻由於種種原因一直都沒有去探究它。前段時間剛好在找實習,期間凸顯了電子郵箱的重要性,剛好最近也有了一些空閒的時間,遂在瞭解了電子郵件的基本工作原理之後,將其整理爲這篇博客。
使用電子郵件的好處
很多人還不清楚使用電子郵件的好處,我貼一下。內容節選自:爲什麼要使用Email及如何用好Email
- 寫Email跟用筆寫信是一樣的,你可以經過深思熟慮,將語言精心組織之後再寫下來,也就是說,在工作中使用它更加正式,而且可以留下記錄作爲證據。長期使用Email會鍛鍊你的寫作能力和語言組織能力;
- 如果我們都習慣使用“回覆”或“全部回覆”,通過一個郵件就可以看到關於一個項目全部的溝通信息;
- 上級經常不知道我們打電話或者發IM消息給客戶到底在談些什麼,而發Email時“抄送”給他,通常情況下他都會很樂意接收,當然你也可以“抄送”或者“密送”給其他你希望看到這個郵件的人;
- 很多時候我們都習慣用IM工具傳遞文件,經常會出現的問題是找不到存在哪裏了,或者換了電腦就沒有了。用Email來發文件,永遠不會發生這樣的事,只要你不點擊“徹底刪除”。如果在大學我已經學會熟練使用Email了,我在大學的一些論文便可以保留下來;
- 當你想打電話給對方時,常常要考慮對方是否方便接電話,而使用Email則完全不用考慮,如果實在內容很重要,需要及時處理,則可以發個短信通知對方就行了;
- 在電話或者IM中收到一個需要後續答覆的事項,往往會被忽略或者被後面的信息淹沒,而Email可以做出標記,不會被遺漏。
有人會說,Email不如IM快捷,如果你翻開你發出的IM信息記錄看一下,有多少是真正需要那麼“快捷”呢?或者有人會說,Email需要長篇大論,太浪費時間,然而如果你再仔細統計一下發IM消息和打電話來溝通一件事所花費的時間的話,你會發現他們纔是浪費時間的真正“罪魁禍首”。或者有人會說,Email不如電話中溝通那麼直接而親切,如果你仔細回憶一下你打過的電話,有多少是真正需要那麼“直接而親切”呢?
RFC 5322–Internet郵件格式
在瞭解電子郵件的基本工作原理之前,我們先來看看在網絡中能被傳輸與處理的電子郵件的標準格式。
我們對RFC 5322所定義的標準郵件格式進行考察:
郵件由一個基本的信封,數個頭字段,一個空行和郵件體組成。頭的每個字段由一行ASCII文本組成。字段是一個基本的鍵值對,鍵被稱爲域名。
在一般用法中,用戶代理創建一個郵件,並將其傳遞給郵件服務器,然後郵件服務器利用某些頭字段來構造出實際的信封。
RFC 5322中與郵件傳輸相關的頭字段:
郵件頭 | 含義 |
---|---|
To | 主要收件人的電子郵件地址 |
Cc | 次要收件人的電子郵件地址 |
Bcc | 密件抄送的電子郵件地址 |
From | 標識了郵件撰寫者 |
Sender | 可選字段,當發送人與撰寫人不一致時 |
Received | 傳輸路徑上每個傳輸代理節點將自己填入其中 |
Return-Path | 由最後一個傳輸代理添加指示如何返回發件人,一般留空 |
RFC 5322中郵件頭使用的某些字段:
郵件頭 | 含義 |
---|---|
Date | 郵件發出的日期與時間 |
Reply-To | 回覆時發送給誰,可以和 From 不同 |
Message-Id | 郵件列表中不同郵件的一個ID |
In-Reply-To | 當前郵件回覆對象的 ID |
References | 其他相關郵件的ID |
Keyords | 用戶選擇的關鍵字 |
Subject | 一行顯示的郵件概要 |
在最初,電子郵件只能由文本消息組成,這些消息用英文書寫並用ASCII碼標識。如今電子郵件所能發送的內容越來越多樣,除了語言的多樣性外,音頻,圖像,二進制文本或程序也可以由電子郵件進行發送,MIME(多用途Internet郵件擴展)使這些都得以實現。
關於MIME的詳細內容不再這裏進行闡述,有興趣的同學可以自行了解。
電子郵件的傳送
有關電子郵件的基本工作原理,推薦大家閱讀這一篇博文:淺探電子郵件原理。
但在閱讀這篇博文之前,博主先在這裏講述幾個重要的概念:
- 用戶代理:提供電子郵件服務的客戶端,如微軟的outlook、騰訊的QQ郵箱。當然,我這裏指的都是客戶端,而不是Web網頁。
- 郵件傳輸代理(郵件服務器):負責將用戶郵件從源端移動到目的地,運行在郵件服務器機器上。
- 郵箱:將用戶代理與郵件服務器銜接起來,存儲用戶收到的電子郵件,郵箱由郵件服務器負責維護。
然後,請閱讀鏈接中的文章~
關於SMTP的握手過程,我在這裏也進行一點補充:
- 發送電子郵件的計算機與目標計算機的25端口建立TCP鏈接;
- TCP鏈接建立成功,作爲客戶端的發送機器(以下簡稱客戶端)等待服務端的接收機器(以下簡稱服務器)進行回覆,告訴客戶端是否已經準備好接收郵件;
- 如果服務器沒有進行回覆,則客戶端釋放鏈接,稍後嘗試與服務器進行重連;
- 如果服務器接收郵件,則客戶端聲明這封電子郵件來自於誰,將要交給誰;
- 服務器確認是否有這樣的收件人,如果有則指示客戶端發送郵件;
- 兩個方向上的所有郵件都交換完畢,鏈接被釋放。
還有一點:最初,用戶代理與郵件服務器是運行在同一臺電腦上的。現在用戶代理通常運行在個人計算機上,而郵件服務器則運行在ISP和公司服務器上。
總結
- 熟悉電子郵件系統的體系結構–用戶代理以及郵件服務器模型;
- 熟悉用戶代理與郵件服務器的作用;
- 掌握電子郵件的標準格式;
- 掌握SMTP的握手過程;
- 瞭解MIME、IMAP與POP3。
參考閱讀
計算機網絡—Andrew S. Tanenbaum/David J. Wetherall
淺探電子郵件原理—Author
爲什麼要使用Email及如何用好Email—賈王東的博客
電子郵件—喵醬的書架