【摘 要】本文通過(guò)Winmail.dat問(wèn)題的提出,介紹了郵件MIME編碼和Exchange郵件TNEF編碼,并介紹了通過(guò)修改發(fā)送方和接收方的設(shè)置,解決此問(wèn)題。
【關(guān)鍵詞】Winmail.dat MIME TNEF 編碼 格式 解碼
一、前言
我們?cè)谑褂肔otus Notes的時(shí)候,會(huì)發(fā)現(xiàn)有附件名字為Winmail.dat的郵件,這樣的郵件在Lotus Notes客戶(hù)端是不能打開(kāi)的。檢查此郵件的文檔屬性,可以看到此郵件發(fā)送的內(nèi)容類(lèi)型是:application/ms-tnef; name=”winmail.dat”。
出現(xiàn)這種問(wèn)題的原因是發(fā)件人使用的是Exchange發(fā)送郵件,沒(méi)有開(kāi)啟MIME編碼。Winmail.dat是把無(wú)編碼格式的附件加載到郵件里。
二、MIME編碼
多用途互聯(lián)網(wǎng)郵件擴(kuò)展(Multipurpose Intemet Mail Extensions,MIME)是當(dāng)前廣泛應(yīng)用的一種電子郵件技術(shù)規(guī)范。在MIME出現(xiàn)之前,互聯(lián)網(wǎng)使用RFC822作為電子郵件的文本格式標(biāo)準(zhǔn)。但是RFC822具有一定的局限性:它只能發(fā)送基本的ASCII碼文本信息,郵件內(nèi)容如果包含語(yǔ)音、圖像等多媒體數(shù)據(jù)以及其他二進(jìn)制數(shù)據(jù)文件,實(shí)現(xiàn)起來(lái)就非常困難。MIME在RFC822的基礎(chǔ)上對(duì)電子郵件規(guī)范作了大量的擴(kuò)展,引入了新的格式規(guī)范和編碼方式,彌補(bǔ)其缺陷。不僅可以用來(lái)傳輸8bit的字符,也可以用來(lái)傳送二進(jìn)制的文件,如郵件附件中的圖像、音頻等信息,而且擴(kuò)展了很多基于MIME 的應(yīng)用。
從編碼方式來(lái)說(shuō),MIME定義了兩種編碼方式:Base64和可打印編碼。Base64編碼技術(shù)用于編碼任意的2進(jìn)制信息。所以可以用Base64編碼方式傳輸圖像、聲音、視頻文件等信息??纱蛴【幋a是把一個(gè)8bit的字符用兩個(gè)16進(jìn)制數(shù)值表示,然后在前面加“=”。根據(jù)輸入的字符串或字節(jié)范圍進(jìn)行編碼,若是不需編碼的字符,直接輸出。若需要編碼,則先輸出’=’,后面跟著以2個(gè)字符表示的十六進(jìn)制字節(jié)值。
通常,電子郵件是由消息頭和消息體組成。對(duì)照RCF822中的定義,MIME在Internet E-mail報(bào)文中增加了5個(gè)新的頭域,即:MIME-Version;Content-Type;Content-Transfer-Encoding;Content-ID;Content-Description。郵件頭包含了發(fā)件人、收件人、主題、時(shí)間、MIME版本、郵件內(nèi)容的類(lèi)型等重要信息。每條信息稱(chēng)為一個(gè)域,由域名后加“:”和信息內(nèi)容構(gòu)成,可以是一行,較長(zhǎng)的也可以占用多行。域的首行必須“頂頭”寫(xiě), 即左邊不能有空白字符(空格和制表符);續(xù)行則必須以空白字符打頭, 且第一個(gè)空白字符不是信息本身固有的, 解碼時(shí)要過(guò)濾掉。郵件體包含郵件的內(nèi)容, 他的類(lèi)型由郵件頭的“Content-Type”域指出。常見(jiàn)的簡(jiǎn)單類(lèi)型有text/plain(純文本) 和text/html (超文本)。
三、Exchange郵件編碼
上面的問(wèn)題中郵件類(lèi)型為:application/ms-tnef,這種類(lèi)型是由Exchange郵件發(fā)送的。Exchange Server使用傳輸中性封裝格式 (TNEF) 將MAPI郵件轉(zhuǎn)換為 RFC 822格式。TNEF以application/ms-tnef 類(lèi)型的MIME附件的形式出現(xiàn)在郵件中。該附件的名稱(chēng)為Winmail.dat。它包含完整的郵件內(nèi)容以及所有附加文件。只有 MAPI客戶(hù)端(如Outlook)能夠?qū)?Winmail.dat 附件進(jìn)行解碼。非MAPI客戶(hù)端無(wú)法對(duì)TNEF進(jìn)行解碼,并且可能將 Winmail.dat 顯示為典型但無(wú)用的文件。
TNEF編碼的郵件包含郵件的純文本版本以及一個(gè)二進(jìn)制附件,該附件“包裝”著原始郵件的其他各部分。多數(shù)情況下,該二進(jìn)制附件將被命名為 Winmail.dat,并可能包括:
(一)該郵件的帶格式文本版本(字體信息、顏色等)
(二)OLE 對(duì)象(嵌入的圖片、嵌入的 Office 文檔等)
(三)特殊的 Outlook 功能(自定義表格、投票按鈕、會(huì)議請(qǐng)求等)
(四)添加到原始郵件的常規(guī)文件附件
當(dāng)不識(shí)別TNEF的郵件客戶(hù)端收到包含TNEF信息的郵件時(shí),有三種常見(jiàn)結(jié)果:
1.收到了該郵件的純文本版本,且包含名為Winmail.dat 的附件。但由于該 Winmail.dat附件為特殊的TNEF格式,因而在打開(kāi)時(shí)沒(méi)有任何有用的信息。
2.收到了該郵件的純文本版本,且包含一個(gè)按普通方法命名的附件(如 ATT00008.dat 或 ATT00005.eml)。在這種情況下,客戶(hù)端無(wú)法識(shí)別郵件的 TNEF 部分,并且無(wú)法識(shí)別 Winmail.dat 文件名,因此客戶(hù)端創(chuàng)建了一個(gè)文件名來(lái)保存 TNEF 信息。
3.收到了該郵件的純文本版本,但客戶(hù)端忽略了Winmail.dat附件。這是 Microsoft Outlook Express中存在的情況。盡管Outlook Express不識(shí)別TNEF,但它知道要忽略TNEF信息。結(jié)果便得到一個(gè)純文本郵件。
四、解決方法
(一)郵件發(fā)送方解決方法
TNEF的使用通常受到Outlook中稱(chēng)為“Microsoft Outlook RTF格式”的設(shè)置的影響。RTF格式和TNEF并不完全相同,但是它們之間有著密切關(guān)系。
可以通過(guò)控制是否以RTF格式發(fā)送郵件來(lái)解決這類(lèi)問(wèn)題。
創(chuàng)建自定義收件人:
當(dāng)管理員使用 Microsoft Exchange Administrator 程序創(chuàng)建自定義收件人時(shí),請(qǐng)單擊清除“發(fā)送給該收件人的郵件始終采用 Microsoft Exchange RTF 格式”復(fù)選框。
修改現(xiàn)有的 Microsoft Exchange 和自定義收件人:
管理員可以通過(guò)單擊清除收件人屬性的高級(jí)屬性頁(yè)中的 MAPI 收件人復(fù)選框,防止現(xiàn)有的用戶(hù)帳戶(hù)(Microsoft Exchange 用戶(hù)或自定義收件人)發(fā)送 RTF 信息。管理員可以通過(guò)單擊收件人姓名,然后單擊文件菜單上的屬性,查看收件人的屬性。
個(gè)人通訊簿中的地址:
最終用戶(hù)可以通過(guò)單擊清除個(gè)人通訊簿 (PAB) 中 Internet 地址的 SMTP - 地址屬性頁(yè)中的“發(fā)送給該收件人的郵件始終采用 Microsoft Exchange RTF 格式”復(fù)選框,修改個(gè)人通訊簿 (PAB) 中的 Internet 地址以防止發(fā)送 RTF 信息。要獲取 PAB 條目的屬性,請(qǐng)單擊該條目,然后單擊文件菜單上的屬性。
配置 Internet Mail Connector (IMC):
管理員可以使用 RTF 選項(xiàng)以下列方式配置 IMC:
1.打開(kāi) Internet Mail Connector 屬性頁(yè)。
2.單擊常規(guī)選項(xiàng)卡。
“發(fā)送 Microsoft Exchange RTF 信息”列表框控制 RTF 數(shù)據(jù)的發(fā)送。有三個(gè)值可供選擇:
如果將該值設(shè)置為用戶(hù),則使用收件人屬性來(lái)決定是否發(fā)送 RTF 信息。
如果將該值設(shè)置為總是,則無(wú)論收件人屬性是什么,總是發(fā)送 RTF 信息。
如果將該值設(shè)置為從不,則永遠(yuǎn)不會(huì)發(fā)送 RTF 信息。
管理員也可以在每個(gè)域的基礎(chǔ)上配置發(fā)送 RTF 信息的選項(xiàng)。要定義電子郵件域和該域的郵件設(shè)置,請(qǐng)單擊 Internet 郵件選項(xiàng)卡中的電子郵件域按鈕。
(二)郵件接收方解決方法:
1.接收方服務(wù)器:
早一點(diǎn)兒的Domino服務(wù)器是不能對(duì)Winmail.dat進(jìn)行解碼的,但是在6.5版本以后,domino已經(jīng)提供了對(duì)Winmail.dat的附件進(jìn)行解碼的功能。我們使用的Domino8.5版本需要在服務(wù)器的配置文件(Notes.ini)中加入一行:TNEFEnableConversion=1,就可以解決此問(wèn)題。
2.接收方客戶(hù)端
客戶(hù)端可以下載安裝一個(gè)解碼Winmail.dat的閱讀器,像Winmail-reader等。將郵件中的Winmail.dat附件下載到本地。運(yùn)行Winmail閱讀器打開(kāi)這個(gè)附件就可以看到郵件的文本內(nèi)容和附件。
五、結(jié)束語(yǔ)
通過(guò)介紹郵件編碼和Winmail.dat問(wèn)題的解決方法,可以解決COSL郵件系統(tǒng)中出現(xiàn)的類(lèi)似問(wèn)題,消除了和Exchange郵件系統(tǒng)郵件收發(fā)的障礙,間接的提高了工作效率。
參考文獻(xiàn):
[1] IBM.如何解決從Internet上來(lái)的郵件里的附件名字變?yōu)閣inmail.dat,IBM技術(shù)知識(shí)庫(kù),1897669D20000 2009
[2]王淑蓉 沈虹. 分析MIME郵件組成結(jié)構(gòu)及構(gòu)建郵件收發(fā)系統(tǒng),現(xiàn)代電子技術(shù),2004