当使用
String s;

if (part.isMimeType("text/plain")) ...{

try ...{
s = part.getContent();

} catch (UnsupportedEncodingException uex) ...{
InputStream is = part.getInputStream();

/**//*
* Read the input stream into a byte array.
* Choose a charset in some heuristic manner, use
* that charset in the java.lang.String constructor
* to convert the byte array into a String.
*/
s = convert_to_string(is);

} catch (Exception ex) ...{
// Handle other exceptions appropriately
}
}

getContent() 时,文本主体部分(例如主类型是“text”的主体部分)返回 Unicode 字符串对象。通常,这些主体部分内部用某些非 Unicode 字符集保持文本数据。JavaMail(通过 "text/plain" DataContentHandler)试着将那些数据转换成 Unicode 字符串。基础 JDK 的字符集可用于做这种工作。如果 JDK 不支持特别的字符集,那么就引发 UnsupportedEncodingException。在这种情况下,可以使用 getInputStream() 方法来将内容作为字节流检索。下面是一个例子:
String s;
if (part.isMimeType("text/plain")) ...{
try ...{
s = part.getContent();
} catch (UnsupportedEncodingException uex) ...{
InputStream is = part.getInputStream();
/**//*
* Read the input stream into a byte array.
* Choose a charset in some heuristic manner, use
* that charset in the java.lang.String constructor
* to convert the byte array into a String.
*/
s = convert_to_string(is);
} catch (Exception ex) ...{
// Handle other exceptions appropriately
}
}

本文介绍JavaMail处理非Unicode编码邮件正文的方法。当遇到不支持的字符集导致UnsupportedEncodingException时,可以通过获取字节流并手动指定字符集的方式解决。

4194

被折叠的 条评论
为什么被折叠?



