1. 程式人生 > >電子郵件協議之SMTP、POP3和IMAP

電子郵件協議之SMTP、POP3和IMAP

首先,來介紹一下比較常見的因特網電子郵件的流程框圖,先來直觀感受一下,假設傳送的郵件的使用者名稱為為小明,接收郵件的使用者為小紅。


圖1:電子郵件協議及其通訊實體

其中,在接收端郵件伺服器(E-mail Server)與接收使用者代理(User Agent)之間常用的協議有:POP3(Post Office Protocol-Version3)和IMAP(Internet Mail Access Protocol),他們都是基於TCP傳輸協議

上圖中,小明要傳送郵件,他的使用者代理(可以理解為小明電腦裡的Foxmail應用程式)就通過SMTP協議將郵件傳送到他的郵件伺服器,郵件伺服器將此郵件加入到郵件伺服器的傳送郵件佇列中。然後小明的郵件伺服器再通過SMTP協議將此郵件傳送到小紅的郵件伺服器中。但是,如何將小紅郵件伺服器中的郵件傳送到小紅的電腦上?如果繼續使用SMTP協議,可以嗎?

答案是不可以的。

簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP),它是用於傳送方的郵件伺服器傳送報文到接收方郵件伺服器。它是一種推協議,即它是由要求傳送檔案的一方首先發起請求,將檔案推送出去。另外,作為對比,介紹一下拉協議,拉協議有很多,比如HTTP,HTTP可以由需要資源的一方發起,比如說使用者,在web上瀏覽網頁的時候,開啟一個連結,這個時候使用者端的瀏覽器傳送一個HTTP請求到伺服器,伺服器再將請求的資源通過HTTP響應報文的形式傳送回來,這是一種使用者主動請求,然後再將資源發過來的過程。他們都是基於TCP協議

上圖中,小紅的郵件伺服器接收到來自小明的郵件之後,但是這個時候,小紅的電腦處於關機狀態,如果使用SMTP協議,郵件伺服器傳送請求,但是沒有響應,過一段時間再發請求,一直沒有響應,這樣會造成資源的浪費,也很不合理。所以就需要用到POP3和IMAP協議。

POP3是一種極為簡單的郵件訪問協議,功能上較IMAP要差些。POP3按照3個階段進行工作:特許事務處理以及更新

1、特許階段,使用者代理髮送使用者名稱和口令

2、事務處理階段:使用者代理取回報文;還可以對報文做刪除標記,取消報文刪除標記,以及獲取郵件的統計資訊

3、更新階段:結束該POP3會話;這個時候該郵件伺服器刪除那些被標記的刪除的報文。

總結起來就是:先是傳送使用者的資訊進行登入,然後具體的操作,是看郵件呢,還是刪郵件,最後是結束會話。

再介紹IMAP之前,來介紹一下POP3的很大的缺點,它不是雙向的。當用戶用使用者代理將郵件儲存在本地之後,在本地所進行的對郵件的刪除等操作,不會對使用者的郵件伺服器造成影響。但是IMAP解決了這樣的問題

IMAP是一種郵件訪問協議,但是它比POP3有更多的特色,但同時也比POP3要更復雜。它是雙向的,將本地的郵件與遠端的伺服器聯絡起來。在本地所進行的操作可以與郵件伺服器同步。

來看一下QQ郵箱中對於POP3和IMAP的區別的介紹:

POP允許電子郵件客戶端下載伺服器上的郵件,但是您在電子郵件客戶端的操作(如:移動郵件、標記已讀等),這是不會反饋到伺服器上的,比如:您通過電子郵件客戶端收取了QQ郵箱中的3封郵件並移動到了其他資料夾,這些移動動作是不會反饋到伺服器上的,也就是說,QQ郵箱伺服器上的這些郵件是沒有同時被移動的 。但是IMAP就不同了,電子郵件客戶端的操作都會反饋到伺服器上,您對郵件進行的操作(如:移動郵件、標記已讀等),伺服器上的郵件也會做相應的動作。也就是說,IMAP是“雙向”的。 同時,IMAP可以只下載郵件的主題,只有當您真正需要的時候,才會下載郵件的所有內容。 最後一句話的意思,當你的網不好的時候,只能看到郵件的題目時,下次等你網路好的時候,就可以看到全部郵件的內容了。 除了這兩種協議之外,還可以使用HTTP協議來訪問郵件,這種情況發生在用Web瀏覽器來收發電子郵件,就比如我開啟網頁版QQ郵箱,我們可以通過HTTP協議來實時的收發郵件。 下面,是我的親身實踐:

這個是我本地FOXMail上的QQ郵箱,郵箱型別為POP3型別
這個是我本地FOXMail上的163郵箱,郵箱型別為IMAP型別
我刪除本地的FOXMail上的QQ郵箱上的一個郵件,
刪除紅色標記的郵件,這個時候我使用瀏覽器開啟我的QQ郵箱,即通過HTTP協議來訪問我的郵箱伺服器。
沒有刪除 下面來實驗我的郵箱型別為IMAP的163郵箱
這是我的FOXMail上的郵件的一部分,刪除紅色條框的郵件,
用瀏覽器開啟我的163郵箱,果然刪除了。

相關推薦

電子郵件協議SMTPPOP3IMAP

首先,來介紹一下比較常見的因特網電子郵件的流程框圖,先來直觀感受一下,假設傳送的郵件的使用者名稱為為小明,接收郵件的使用者為小紅。 圖1:電子郵件協議及其通訊實體 其中,在接收端郵件伺服器(E-mail Server)與接收使用者代理(User Agent)之間常用的協議

電子郵件協議SMTPPOP3IMAP4

tcp 默認 支持 聯網 互聯網 郵件協議 保存 遠程文件 內容 常見的電子郵件協議:SMTP、POP3、IMAP4 郵件發送協議:SMTP協議 郵件讀取協議:POP3、IMAP4協議 SMTP協議(simple mail transfer protocol):簡單

SMTPPOP3IMAP郵件協議

目錄 SMTP POP IMAP 總結 今天入職第一天,公司讓配置個人的內網、外網郵箱,這可把我給搞暈了,本來以前就對郵箱這塊不是很瞭解,平時也不怎麼用郵箱,頂多有個QQ郵箱而已。今天,趁著配置公司的個人內外網郵箱,查了下資料,梳理了一下這三種協議的區別。 首先,SMTP

郵件協議SMTPPOP3,HTTP)

SMTP協議通訊模型  SMTP協議是TCP/IP協議族中的一員,主要對如何將電子郵件從傳送方地址傳送到接收方地址,也即是對傳輸的規則做了規定。SMTP協議的通訊模型並不複雜,主要工作集中在傳送SMTP和接收SMTP上:首先針對使用者發出的郵件請求,由傳送SMTP建立一條

電子郵件傳送接收過程 一一 SMTPPOP3IMAP

電子郵件傳送協議主要是SMTP,收件協議主要是POP3和IMAP; SMTP 的全稱是“Simple Mail Transfer Protocol”,即簡單郵件傳輸協議。它是一組用於從源地址到目的地址

郵件傳輸協議 SMTP POP3 IMAP Exchange 比較及聯絡?

常見的郵件傳輸協議有SMTP,POP3,  IMAP, Exchange ,這些進行簡單的比較學習: 1、exchange 是微軟公司出的一套電子郵件處理元件,有存取,轉發,儲存,語音,協同過濾等功能 2、smtp 是簡單郵件傳輸協議,主要是發郵件。編寫好郵件資訊後,點

命令列傳送接收郵件smtppop3協議-計網(3)

前言 學習郵件系統的相關知識後,實際操作一下。應用一下具體的命令列。 正文 要看看我計算機網路應用層基礎總結的這裡 smtp協議 常見命令 命令列 作用

Java Mail---SMTPPOP3協議-DOS下手動收發郵件演示過程

轉載請註明出處: http://blog.csdn.net/qq_26525215 本文源自 E-Mail協議簡介: 郵件伺服器,按照提供的服務型別,可以分為傳送郵件的伺服器我接收郵件的伺服器。 傳送郵件的伺服器使用傳送協議,現在常用的是SMTP協

IPIPv4IPv6TCPSMTPPOP3IMAP 協議簡述

IP : IP協議用於網路通訊(計算機之間的通訊),網際網路上每個計算機的唯一標識就是IP地址,類似123.123.123.123。如果一臺計算機同時接入到兩個或更多的網路,比如路由器,它就會有兩個或多個IP地址,所以,IP地址對應的實際上是計算機的網路介面,通常是網絡卡。 IPv4:I

C/C++ 文件操作CreateFileReadFileWriteFile

amp 列表 invalid bsp 功能 空間 out 系統 file 通常使用下列函數來通過Win系統來對外圍設備進行通信處理: ------------------------------- 1. CreateFile   這個函數的功能是創建或者打開一個文件或者I/

C++知識回顧__stdcall__cdcel__fastcall三者的區別

進行 pan span number 適用於 編譯器 api num 處理 __stdcall、__cdecl和__fastcall是三種函數調用協議,函數調用協議會影響函數參數的入棧方式、棧內數據的清除方式、編譯器函數名的修飾規則等。 調用協議常用場合 __stdca

djangocookiesessionajax

length clean 投票 console 默認值 設置 什麽 save pre 1 Cookie cookie是什麽? 保存在客戶端瀏覽器上的鍵值對 {k:v} cookie依附在請求頭或響應頭中出現 發

SECURITY 03: 郵件服務TLS/SSL 總結答疑 CA數字證書服務

roo email tab cal hostname tcp6 std http let day03部署CA服務器郵件加密網站加密+++++++++++++++++++++++++++++部署CA服務器 (54) 機構名稱 tarenaa

JavabytecharString類型相互轉換

rac static rgs div body valueof () print byte[] 1 package basictype; 2 3 /** 4 * byte、char和String類型相互轉換 5 */ 6 public class C

(轉)MySQLcharvarchartext的設計

SQ 數值 abc dep 添加 pos sage character AC from: http://www.cnblogs.com/billyxp/p/3548540.html 最近有表結構設計中出現了varchar(10000)的設計引起了大家的討論,我們下面就

社會網絡分析”組成部分”小圈子聚類

直接 cli 引入 網絡 網絡圖 其他 社交網絡 個人 直觀 組成部分(Components) “組成部分“這個翻譯有點不太直觀,如果哪位朋友有更好的翻譯方式,請告知我。組成部分是一個在網絡圖中的子圖,該子圖與外界沒有聯系。比如生活在某個太平洋小島上的居民們,他們與外界可能

CSS的positionabsolutefixedrelative區別

abs 當前 splay body left position borde ati aud 首先,我們應了解position的默認值——static static 默認值,沒有定位,元素出現在正常的流中,即忽略 top, bottom, left, right 或者 z-

Python學習筆記字典keys()values() items()方法

com png inf keys 學習筆記 修改 分享圖片 clas 沒有 隨筆記錄方便自己和同路人查閱。 #------------------------------------------------我是可恥的分割線--------------------------

webpack 3hashchunkhashcontenthash三者的區別

就是 區別 生成 用法 pac put 覆蓋 一個 失效 在使用webpack 3中,文件名的hash值可以有三種hash生成方式,那具體使用哪一種呢? 1.hash 如果都使用hash的話,所有文件的hash都是一樣的,而且每次修改任何一個文件,所有文件名的hash至都將

Python學習筆記字符串操作rjust()ljust()icenter()方法對齊文本

字符串操作 int 圖片 方法 spa -c enter ice 第一個 隨筆記錄方便自己和同路人查閱。 #------------------------------------------------我是可恥的分割線--------------------------