日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

邮件实现详解(三)------邮件的组织结构

發(fā)布時(shí)間:2025/3/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 邮件实现详解(三)------邮件的组织结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  要想各種郵件處理程序能識(shí)別我們所寫的電子郵件,能從我們所書寫的電子郵件中分析和提取出發(fā)件人,收件人,郵件主題和郵件內(nèi)容以及附件等信息,那么我們所寫的電子郵件必須要遵循一定的格式要求,正如我們上一篇博客?手工體驗(yàn)smtp和pop3協(xié)議?,我們在發(fā)送郵件時(shí)有固定的寫法。而這種郵件內(nèi)容的基本格式和具體細(xì)節(jié)分別是由 RFC822 文檔和 MIME 協(xié)議定義的。

?

1、RFC822 郵件格式

  英文參考文檔如下:https://tools.ietf.org/html/rfc822

  RFC822 文檔中定義的文件格式包括兩個(gè)部分:郵件頭和郵件體。在上一篇博客,我們通過SMTP服務(wù)發(fā)送一封郵件,然后用POP3服務(wù)器接收。郵件接收內(nèi)容如下圖紅色框所顯示:

  

  這上面顯示的不全,我這里將其內(nèi)容整理出來,并在每行左邊加上標(biāo)號(hào):

1 Received: from smtpbg5.qq.com (unknown [183.60.61.230])by mx6 (Coremail) with SMTP id OMCowACXv+ssf99ZD5FqAg--.5570S3;Thu, 12 Oct 2017 22:41:48 +0800 (CST) 2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512;t=1507819308; bh=N2xK6iU/bt0tcntOdutSQ3tkYXbTtOi08RT+HjuXmBc=;h=From:To:Subject:Mime-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID;b=lzBtxAWw0+HB1bGLkkCqlUeU4bvVoMxDp3UZTKq3YCIJt5Ypu4FkE0m5rrrpcxF0DW0/PQajrQTughLTmpjoudI5aDWjfrfkOc1Z0+ltaAraoZfdE5HmNQ0hxQstNa+IbjCGMVEzCOMikVm5qklyCz/1Lwd5mBJ90YkknS3sL08= 3 X-QQ-FEAT: Gf8h89u9tNwRjwDYIPPhYegibbvTgUmwr4I/ntV6mwr6YOyFiWpUpVj+bCsJztAz24NjMs/p1D8BXG7LYvZRCPMPQV7jdW3AKjTclrSS9xE29fxWsEjYk5QlD1cMIuhHF9Po1HMwWKIZX8q6smehIwr+t/du8sprvHVue4ty5KMPeWw967qaAZgta5hcnRtgajhZRcIumVxr+K4/nY7I+wwNenOTfHT4Ly4K1Ne+vD7VNJbLHH674HEJ2CsoSEEBW7X/LeeSq6M= 4 X-QQ-SSF: 0001000000000010000000000000007 5 X-HAS-ATTACH: no 6 X-QQ-BUSINESS-ORIGIN: 2 7 X-Originating-IP: 113.57.253.69 8 X-QQ-STYLE: 9 X-QQ-mid: webmail4t1507819307t482382910 From: "=?ISO-8859-1?B?MTEzMjgwMzk1MQ==?=" <1132803951@qq.com> 11 To: "=?ISO-8859-1?B?MTgyNzEyNjU3MzI=?=" <18271265732@163.com> 12 Subject: hello world 13 Mime-Version: 1.0 14 Content-Type: multipart/alternative;boundary="----=_NextPart_59DF7F2B_08CB07D0_339F08F2" 15 Content-Transfer-Encoding: 8Bit 16 Date: Thu, 12 Oct 2017 22:41:47 +0800 17 X-Priority: 3 18 Message-ID: <tencent_9EFED46440A5BAD43E6BC680FAC8A58E460A@qq.com> 19 X-QQ-MIME: TCMime 1.0 by Tencent 20 X-Mailer: QQMail 2.x 21 X-QQ-Mailer: QQMail 2.x 22 X-QQ-SENDSIZE: 520 23 Received: from qq.com (unknown [10.137.130.92])by smtp.qq.com (ESMTP) with SMTPid ; Thu, 12 Oct 2017 22:41:47 +0800 (CST) 24 Feedback-ID: webmail:qq.com:bgweb:bgweb4 25 X-CM-TRANSID:OMCowACXv+ssf99ZD5FqAg--.5570S3 26 Authentication-Results: mx6; spf=pass smtp.mail=1132803951@qq.com; dkim=pass header.i=@qq.com 27 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvj4RWLvtDUUUU28 This is a multi-part message in MIME format.29 Content-Type: text/plain;charset="ISO-8859-1" 30 Content-Transfer-Encoding: base6431 PGRpdj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdsdWNpZGEgR3JhbmRlJywgVmVyZGFu YSwgJ01pY3Jvc29mdCBZYUhlaSc7IGxpbmUtaGVpZ2h0OiAyMy44cHg7Ij5UaGlzIGlzIHRo ZSBmaXJzdCBlbWFpbCBzZW50IGJ5IGhhbmQgdXNpbmcgdGhlIFNNVFAgcHJvdG9jb2w8L3Nw YW4+PC9kaXY+

  上面便是?RFC822 所定義的郵件格式,從第 1 行到第 30 行都是郵件頭,第 31 行是郵件體(經(jīng)過base64加密過了,有興趣的大家可以解碼看看)。而郵件頭和郵件體之間以一個(gè)空行間隔,郵件頭部分是由多個(gè)頭字段和字段內(nèi)容組成,分別表示收件人,發(fā)件人,發(fā)件時(shí)間,主題等信息。還有一些信息是對(duì)應(yīng)的SMTP服務(wù)器在郵件傳遞過程中所加上的,我們知道現(xiàn)實(shí)生活中的郵局在處理郵件時(shí),通常都會(huì)在信封上加上郵戳,表示這封郵件在什么時(shí)候經(jīng)過了哪個(gè)郵局哪個(gè)部門處理,我們上個(gè)例子是QQ郵箱發(fā)給163郵箱的。而SMTP服務(wù)器按從下往上的方式添加信息,即先添加的字段位于后添加字段的后面。所以qq的SMTP服務(wù)器會(huì)先添加頭字段,但是添加的字段會(huì)在163的SMTP服務(wù)器添加字段的下面,另外 POP3服務(wù)器也會(huì)自己添加一些字段。

  每一個(gè)郵件頭以“字段名:字段值”的格式出現(xiàn),即每一行郵件頭的內(nèi)容依次由字段名、冒號(hào)、空格、字段值、回車換行符組成。RFC822文檔中定義了多個(gè)標(biāo)準(zhǔn)的郵件頭字段,每一個(gè)郵件頭字段表示一種特定的信息。郵件頭中也可以包含自定義的頭字段,這種自定義的頭字段通常是某個(gè)組織或機(jī)構(gòu)內(nèi)部專用的。下面是對(duì)一些主要的郵件頭字段的解釋:

  

  我們從上可以知道,RFC822文檔存在兩個(gè)問題:

  ①、定義了郵件內(nèi)容的主體結(jié)構(gòu)和各種郵件頭字段的詳細(xì)細(xì)節(jié),但是,它沒有定義郵件體的格式,RFC822文檔定義的郵件體部分通常都只能用于表述一段普通的文本,而無法表達(dá)出圖片、聲音等二進(jìn)制數(shù)據(jù)。

  ②、SMTP服務(wù)器在接收郵件內(nèi)容時(shí),當(dāng)接收到只有一個(gè)“.”字符的單獨(dú)行時(shí),就會(huì)認(rèn)為郵件內(nèi)容已經(jīng)結(jié)束,如果一封郵件正文中正好有內(nèi)容僅為一個(gè)“.”字符的單獨(dú)行,SMTP服務(wù)器就會(huì)丟棄掉該行后面的內(nèi)容,從而導(dǎo)致信息丟失。

  上面兩個(gè)問題是致命的,當(dāng)今的電子郵件,人們希望在電子郵件中嵌入圖片、聲音、動(dòng)畫和附件。但是,由于圖片和聲音等內(nèi)容是非ASCII碼的二進(jìn)制數(shù)據(jù),而RFC822郵件格式只適合用來表達(dá)純文本的郵件內(nèi)容,所以,要使用RFC822郵件格式發(fā)送這些非ASCII碼的二進(jìn)制數(shù)據(jù)時(shí),必須先采用某種編碼方式將它們“編碼”成可打印的ASCII字符后再作為RFC822郵件格式的內(nèi)容。郵件閱讀程序在讀取到這種經(jīng)過編碼處理的郵件后,再按照相應(yīng)的解碼方式解碼出原始的二進(jìn)制數(shù)據(jù),這樣就可以借助RFC822郵件格式來傳遞多媒體數(shù)據(jù)了。這種做法需要解決一下兩個(gè)技術(shù)問題:

  一、郵件閱讀程序如何知道郵件中嵌入的原始二進(jìn)制數(shù)據(jù)所采用的編碼方式;

  二、郵件閱讀程序如何知道每個(gè)嵌入的圖像或其他資源在整個(gè)郵件內(nèi)容中的起止位置。

  為了解決上面兩個(gè)問題,人們后來專門為此定義了MIME(Multipurpose Internet Mail Extension,多用途Internet郵件擴(kuò)展)協(xié)議。

?

2、MIME協(xié)議

  MIME協(xié)議用于定義復(fù)雜郵件體的格式,它可以表達(dá)多段平行的文本內(nèi)容和非文本的郵件內(nèi)容,例如,在郵件體中內(nèi)嵌的圖像數(shù)據(jù)和郵件附件等。另外,MIME協(xié)議的數(shù)據(jù)格式也可以避免郵件內(nèi)容在傳輸過程中發(fā)生信息丟失。MIME協(xié)議不是對(duì)RFC822郵件格式的升級(jí)和替代,而是基于RFC822郵件格式的擴(kuò)展應(yīng)用。一言以蔽之,RFC822定義了郵件內(nèi)容的格式和郵件頭字段的詳細(xì)細(xì)節(jié),MIME協(xié)議則是定義了如何在郵件體部分表達(dá)出的豐富多樣的數(shù)據(jù)內(nèi)容。

  一個(gè)采用了MIME協(xié)議的電子郵件就叫做MIME郵件,MIME郵件在RFC822文檔中定義的郵件頭字段的基礎(chǔ)上,擴(kuò)充了一些自己專用的郵件頭字段,例如,使用MIME-Version頭字段指定MIME協(xié)議的版本,使用Content-Type頭字段指定郵件體的MIME類型,使用Content-Transfer-Encoding頭字段指定編碼方法,如下所示:?   

MIME-Version:1.0Content-Type:multipart/mixed;boundary="----=_NextPart_000_0050_01C"

  其中,“multipart/mixed”部分說明郵件體中包含有多段數(shù)據(jù),每段數(shù)據(jù)之間使用boundary屬性中指定的字符文本作為分隔標(biāo)識(shí)符。另外,MIME郵件也擴(kuò)展了RFC822文檔中已經(jīng)定義了的郵件頭字段的內(nèi)涵,例如,定義了subject頭字段中的值內(nèi)容的格式,以便通過編碼的方式讓郵件主題中也可以使用非ASCII碼的字符。subject頭字段中的值嵌套在一對(duì)“=?”和“?=”標(biāo)記符之間,標(biāo)記符之間的內(nèi)容由三部分組成:郵件主題的原始內(nèi)容的字符集、當(dāng)前采用的編碼方式、編碼后的結(jié)果,這三部分之間使用“?”進(jìn)行分隔。

?

3、總結(jié)

  這篇博客,帶上前面兩篇博客,我們就將郵件的收發(fā)基本原理講了一下。那么有人會(huì)問,實(shí)際項(xiàng)目中我們也需要考慮郵件的底層實(shí)現(xiàn)協(xié)議嗎?答案是不用的,比如 sun 公司(現(xiàn)在已經(jīng)被orcal收購了)開發(fā)的JavaMail API 就是為方便Java開發(fā)人員在應(yīng)用程序中實(shí)現(xiàn)郵件接收和發(fā)送功能而提供的一套標(biāo)準(zhǔn)開發(fā)包,屏蔽了底層的郵件實(shí)現(xiàn)協(xié)議,那么下一篇博客我們就來用JavaMail 實(shí)現(xiàn)郵件收發(fā)功能。

總結(jié)

以上是生活随笔為你收集整理的邮件实现详解(三)------邮件的组织结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩天堂一区 | 免费av在线 | 在线中文字幕亚洲 | 亚洲日本欧美精品 | 亚洲欧美视频二区 | 一区二区在线精品 | 成人午夜在线观看视频 | 性高跟鞋xxxxhd国产电影 | 蜜臀av88| 好吊操精品视频 | 国产一级在线免费观看 | 亚洲男人天堂视频 | 乱人伦av| h视频在线看 | 亚洲伦理一区二区三区 | 999伊人| 污污的视频在线免费观看 | 青青操网| avtt久久 | 免费在线观看亚洲 | 免费在线观看黄色网址 | 在线一区二区三区四区五区 | 比利时xxxx性hd极品 | 久久精品99久久久久久 | 天天干夜夜操 | 免费污片软件 | 51精品国产人成在线观看 | 怡红院av亚洲一区二区三区h | 一区两区小视频 | 亚洲av不卡一区二区 | 性欧美欧美巨大69 | 男人扒女人添高潮视频 | 亚洲一区二区三区加勒比 | www.国产色| 免费吸乳羞羞网站视频 | 口舌奴vk | 精品少妇av | 九七精品 | 直接看的av网站 | 国产在线一级 | 日韩三级在线免费观看 | 欧美一级夜夜爽 | 91理论片午午伦夜理片久久 | 午夜影院18 | 人人综合 | 中文字幕亚洲乱码熟女一区二区 | 欧美激情日韩 | 一区二区三区四区精品视频 | 老司机精品导航 | 夜夜操夜夜 | 日韩一级免费毛片 | 在线电影一区二区三区 | 草草在线观看 | 操天天操 | 美痴女~美人上司北岛玲 | 午夜看片福利 | 免费人成| 毛片传媒 | 日韩性欧美 | 伊人久久国产 | 国产成人一区二区 | 中文乱码人妻一区二区三区视频 | wwwxxxx日本 | 国产成人精品一区二区三区福利 | 综合色视频 | 日韩精品人妻无码一本 | 中国毛片基地 | 在线看黄网址 | www.好了av | 荷兰av| 国产免费大片 | 欧美精品乱码久久久久久 | 精品久久久久久无码国产 | 天天干女人 | 亚洲精品一区在线观看 | 日韩淫 | 国产视频首页 | 18深夜在线观看免费视频 | 国产精品亚洲精品 | 日本视频免费观看 | 久久9966| 婷婷av在线 | 国产资源视频 | 国产一精品一aⅴ一免费 | 国产精品野外户外 | 老司机免费视频 | 欧美第一页浮力影院 | 第一页综合 | 男人桶进美女尿囗 | 色美av| x88av在线| 欧美黄色性视频 | 亚洲成人视屏 | 国产91丝袜在线播放 | 色偷偷五月天 | 日韩成人免费视频 | 日韩三区视频 | 亚洲xxxxxx| 深夜福利视频在线 |