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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MIME格式解析

發布時間:2023/11/27 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MIME格式解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?本文介紹常見的MIME數據格式。


在協議還原中,不可避免地,經常會在各類協議內容中碰到MIME格式,例如標準郵件協議、HTTP協議。


那么,什么是MIME呢?


MIME是英文Multipurpose Internet Mail Extensions的縮寫,即多用途互聯網郵件擴展。從名字就可以看出,它產生于對郵件內容編碼的過程。它是一個一個互聯網標準,在一系列RFC文檔中進行了定義和更新,例如RFC6532、RFC8098、RFC2231、RFC6838、RFC4289、RFC2049等。


這里需要指出的是,雖然MIME是郵件協議格式的擴展,但并不是所有郵件eml都是MIME格式,一封郵件的格式可能比MIME更簡單,同時,MIME并不局限于在郵件中使用,在很多HTTP報文中,也會發現MIME的身影。


了解了MIME格式,就可以從中提取所需的數據了。


下面將以一封郵件為例子,來對MIME格式進行解析說明。



01

郵件例子


一個MIME格式的郵件例子如下:

Return-Path: <mlemos@acm.org>

To: Manuel Lemos <mlemos@linux.local>

Subject: Testing Manuel Lemos' MIME E-mail composing and sending PHP class: HTML message

From: mlemos <mlemos@acm.org>

Reply-To: mlemos <mlemos@acm.org>

Sender: mlemos@acm.org

X-Mailer: http://www.phpclasses.org/mimemessage $Revision: 1.63 $ (mail)

MIME-Version: 1.0

Content-Type: multipart/mixed; boundary="652b8c4dcb00cdcdda1e16af36781caf"

Message-ID: <20050430192829.0489.mlemos@acm.org>

Date: Sat, 30 Apr 2005 19:28:29 -0300


--652b8c4dcb00cdcdda1e16af36781caf

Content-Type: text/plain; charset=utf-8

Content-Transfer-Encoding: base64


aGVsbG8uIOWNj+iuruWIhuaekOS4jui/mOWOnw==


--652b8c4dcb00cdcdda1e16af36781caf

Content-Type: text/plain; name="attachment.txt"

Content-Transfer-Encoding: base64

Content-Disposition: attachment; filename="attachment.txt"


VGhpcyBpcyBqdXN0IGEgcGxhaW4gdGV4dCBhdHRhY2htZW50IGZpbGUgbmFtZWQgYXR0YWNobWVu

dC50eHQgLg==


--652b8c4dcb00cdcdda1e16af36781caf--


在這封郵件里,包含了三個MIME的語句:

MIME-Version:?

Content-Type:?

Content-Transfer-Encoding:?

Content-Disposition:?


從這個MIME的典型應用中,可以看到,MIME的精髓是數據的分段分類描述,以及數據的可嵌套性和可編碼性。


02


格式說明


一個MIME消息由兩部分組成,分別是消息頭和消息體。


在消息頭中,語句“MIME-Version: 1.0”是必須的。


而“Content-Type:”項,則是描述數據的類型和編碼,默認為“text/plain”,“/”前后分別為主要類型和次要類型,常見的類型有:

text/plain

text/html

image/jpeg

audio/mpeg

video/3gpp

application/gzip

application/rtf

multipart/alternative


詳細的類型可參考http://www.iana.org/assignments/media-types/media-types.xhtml。


對每個Content-Type:”,有不同的參數,如charset,name,boundary等。


主類型“multipart”是MIME的精髓所在,它將多種數據編碼在一起,常見的有“multipart/mixed“,” multipart/related“和”multipart/alternative”。


當“Content-Type:”為“multipart/mixed”等時,表示數據為多種內容的混合,此時會有類似boundary="652b8c4dcb00cdcdda1e16af36781caf"的分隔線描述,分隔線會將數據內容分隔成各自獨立的部分,在各部分中,分別有獨立的數據內容描述。分隔線的前后,會有“--”,處理過程中過濾即可。


Content-Transfer-Encoding:?”描述的是內容的編碼轉換格式。一般有“base64”和“quoted-printable”兩種,即表示內容為BASE64編碼和QP編碼。


Content-Disposition:?”描述的是數據的安排方式,如“attachment”表示為附件,“inline”表示為內嵌數據,這些有參數“filename”。


消息體是消息頭的各個描述及分隔線之外,在各個0x0d0x0a對之間的內容,一般是各種編碼了的數據。


雖然介紹了這么多,但在數據解析中用起來很簡單,只需要找到各個數據段的描述,名稱,內容,就可進行編碼轉換、形成結構化數據并保存了。

長按進行關注。





總結

以上是生活随笔為你收集整理的MIME格式解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:MIME格式解析