邮件报文格式和MIME
在前面講了郵件基本知識(shí)和發(fā)送的協(xié)議,那么郵件本身是怎么構(gòu)成的呢?
一、郵件消息的組成
郵件消息格式是在RFC 822里面規(guī)定的。
一個(gè)標(biāo)準(zhǔn)的郵件格式分為頭部和信體兩部分,頭部由多個(gè)頭部行構(gòu)成。列出最常見的三個(gè)。
(1)To:發(fā)給誰(shuí)
(2)From:誰(shuí)發(fā)送的
(3)Subject:郵件的主題
在寫郵件時(shí)這三個(gè)必不可少。
注意:這里的To、From是郵件內(nèi)容組成部分,這些頭部不同于SMTP命令。
頭部后再加一個(gè)空行之后跟郵件的主體,也就是郵件的信體。
二、多媒體擴(kuò)展MIME
非英語(yǔ)國(guó)家在編寫郵件時(shí)會(huì)在郵件中用自己的語(yǔ)言編寫內(nèi)容,而這些語(yǔ)言沒有辦法使用標(biāo)準(zhǔn)的ASCII碼來(lái)描述,這時(shí)怎么辦呢?人們給出了這樣一種解決辦法。我們稱之為MIME,全稱為:多用途因特網(wǎng)郵件擴(kuò)展。
多用途因特網(wǎng)郵件擴(kuò)展不僅僅可以發(fā)送非英語(yǔ)國(guó)家字符,它還可以發(fā)送其它類型的內(nèi)容,例如聲音、圖像、圖片、視頻等。這才大大擴(kuò)展了電子郵件的用途。
MIME在多個(gè)RFC中都有描述,例如RFC 2045、2046、RFC 5322等。
MIME通過添加額外的信頭頭部聲明來(lái)實(shí)現(xiàn)內(nèi)容的擴(kuò)展。頭部主要使用content-type這樣一些字段。
看一下下面這個(gè)例子:
前三行是From、To、Subject常用字段。
第四行是MIME版本。
第五行是用來(lái)編碼數(shù)據(jù)的方法:這是MIME用來(lái)編碼數(shù)據(jù)的核心方法。會(huì)將非ASCII碼文本的內(nèi)容用某種編碼的方法轉(zhuǎn)化成標(biāo)準(zhǔn)ASCII碼。放在郵件里,這樣就可以實(shí)現(xiàn)用傳統(tǒng)的郵件協(xié)議傳送和接收了。base64是使用最廣泛的編碼方法。
第六行指明了后面要傳送內(nèi)容的類型。這行包含類型名、子類型名和參數(shù)聲明。
頭部聲明后面跟一個(gè)空行接下來(lái)就是要傳送的主體。
三、綜合示例
看以下示例:使用SMTP發(fā)送帶頭部的電子郵件。
這個(gè)實(shí)例使用了命令行操作然后加入了SMTP服務(wù)器的用戶認(rèn)證過程同時(shí)郵件包含頭部。
假設(shè)發(fā)送者郵箱是163的,接收者的郵箱是qq郵箱。
紅色的行號(hào)代表客戶端發(fā)送的命令,黑色的是服務(wù)器端給出的響應(yīng)。
第二行上篇文章講過已經(jīng)講過;
第四行是進(jìn)行身份認(rèn)證。
第五行和第七行是服務(wù)器給出的回應(yīng),回應(yīng)后面的內(nèi)容看似亂碼,事實(shí)上給出的是以base 64編碼的短語(yǔ);
第六行和第八行給出的是以base 64編碼的命令。第六行是郵箱名或者是用戶名,第八行給出郵箱的密碼;
第九行235告訴我們認(rèn)證通過。第九行和第13行前面已經(jīng)講過;
第14行給出data命令表示開始寫郵件了;
第16行到第23行是郵件的內(nèi)容;17行給出了一個(gè)郵件地址表示收信人若要回復(fù),可以回復(fù)到什么地方。
24行服務(wù)器給出一個(gè)250的回應(yīng)表示郵件已經(jīng)被放到發(fā)送隊(duì)列里面;
25行退出;
這是一個(gè)實(shí)際的使用SMTP來(lái)發(fā)送一個(gè)帶頭部郵件的實(shí)例。
總結(jié)
以上是生活随笔為你收集整理的邮件报文格式和MIME的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学习:集合
- 下一篇: 邮件访问协议