比如base64,QP,8-bit等等。在对邮件数据包进行解析的时候,要还原这些解码方式,最方便的方式还是使用javamail。javamail的MimeUtility类封装了很多实用的解码方法,其decode系列方法更是支持很多编码方式。详见javamail-api(http://javamail.kenai.com/nonav/javadocs/javax/mail/internet/MimeUtility.html)
我在做的项目,邮件头是用base64进行编码的,邮件体使用QP编码的,很多邮件客户端是这么做的。解码的代码附上,以供复用。
public static String getFromBASE64(String s) {
if(s == null)
return null;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b);
} catch(Exception e) {
System.out.println("wrong decoding.");
return null;
}
}
public static String getFromQP(String s) throws IOException,MessagingException {
InputStream is = new ByteArrayInputStream(s.getBytes());
InputStream rss= MimeUtility.decode(is, "quoted-printable");
String rs = inputStream2String(rss);
return rs;
}
private static String inputStream2String(InputStream is) throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(is));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null){
buffer.append(line);
}
return buffer.toString();
}