iPhoneがcharset=cp932
のメールを送ってくることがある。
Javaはcp932なんて知らないので、getContent
するとJavaMailが死ぬ。
public static void convertContentType(Part part) throws MessagingException {
String[] headers = part.getHeader("Content-Type");
String contentType = headers[0].toLowerCase();
if(contentType.contains("cp932")) {
part.removeHeader("Content-Type");
part.setHeader("Content-Type", contentType.replaceAll("cp932", "ms932"));
}
}
これでgetContent
する前にContent-Typeを変換する。
ms932ならJavaが理解できるのでgetContent
できるようになる。