有时需要判断邮件里的附件是正文中插入的图片这种“附件”,还是被单独显示在附件区域的附件。附件区域一般需要过滤到inline类型的附件。
public static boolean inlineAttachment(Part part) throws MessagingException {
String contentDisposition = unfoldAndDecode(part.getDisposition());
String disposition = part.getDisposition();
if (disposition != null) {
String dispositionType = MimeUtility.getHeaderParameter(disposition, null);
if ("".equals(dispositionType)) {
return true;
}
}
if (contentDisposition != null && MimeUtility.getHeaderParameter(contentDisposition, null).matches("^(?i:inline)")) {
return true;
}
if (contentDisposition!=null && !contentDisposition.contains("attachment")) {
return true;
}
//如果存在内嵌资源,至少是related
try {
if (part instanceof LocalStore.LocalAttachmentBodyPart) {
if (((LocalStore.LocalAttachmentBodyPart) part).getParent().getParent().isMimeType("multipart/related") && !part.isMimeType("multipart/alternative")) {
return true;
}
}
} catch (Exception e){
e.printStackTrace();
}
if (part.getHeader(MimeHeader.HEADER_CONTENT_ID) != null) {
return true;
}
if (contentDisposition == null && (part.getHeader(MimeHeader.HEADER_CONTENT_ID) == null)) {
return true;
}
return false;
}
网友评论