Java:解決收發郵件附件亂碼問題

來源:互聯網
上載者:User

Java:解決收發郵件附件亂碼問題
[ 來源:Java | 作者:Java | 時間:2007-7-20 | 去論壇]                                    
imeUtility.encodeWord是進行編碼,MimeUtility.encodeWord是進行解碼
無論附件中檔案是什麼樣的字元,都可以進行正確的解碼,但是當檔案都是英文
文字的時候卻會包錯,為null,英文這個時候不支援全英文,所以這個時候應該:
if(!part_FileName.endsWith("?="))  //是全英文
{
    直接賦值   
}
else
{
    MimeUtility.decodeWord(檔案名稱字);
}
messageBodyPart.setFileName(MimeUtility.encodeWord(fileName)); 
同樣收中文附件時,以MimeUtility.decodeWord()將編碼後的字串解碼。

 
字元編碼及字元集轉換問題
前面提到MIME要解決的另外一個問題就是將SMTP協議不支援的位元組流轉換成
為SMTP 協議支援的位元組流。比如我們要通過郵件傳輸一個附件文檔,該附件文檔就
是一個8bit 位元組流,如果簡單的直接通過SMTP 發送,其最高位資訊將被丟失。MIME
規定可以用兩種編碼方式將8bit 的位元組流編碼成為低於8bit 的位元組流,它們分別是
BASE64 編碼(BASE64 將8bit 位元組流編碼成6bit 位元組流)和QP 編碼。這兩種編碼
方式同樣應用在對中文的編碼上。例如如果郵件中文題目叫做“CVS 介紹”,那麼其
編碼後的形式可能為:
Subject: =?gb2312?B?Q1ZTLS3QpMX0LnBwdA==?=
標題字串以”=?”開始,以”?=”結束。”gb2312”表示字串的字元集,而以”?”分
隔的”B”就表示此字串的編碼方式為BASE64。我們處理此標題時就要先將BASE64
編碼的6bit 位元組流轉換為原來的8bit 位元組流,再根據字元集”gb2312”轉換為Java 中的
String 類型。這裡可以簡單的使用JavaMail 提供的MimeUtility.decodeWord()靜態方法
將編碼後的字串解碼。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.