是否有可能只獲得Java中郵件附件的計數?我試着用這個:沒有下載附件的特定郵件附件的計數 - 使用Java
DataHandler handler = message.getDataHandler();
AttachedFileName= handler.getName();
這列出了所有郵件收件箱的所有附件,但不是特定的郵件。
這是可能的,如果是這樣怎麼樣?
謝謝!
是否有可能只獲得Java中郵件附件的計數?我試着用這個:沒有下載附件的特定郵件附件的計數 - 使用Java
DataHandler handler = message.getDataHandler();
AttachedFileName= handler.getName();
這列出了所有郵件收件箱的所有附件,但不是特定的郵件。
這是可能的,如果是這樣怎麼樣?
謝謝!
這應該給你的附件數量,
Multipart multipart = (Multipart) message.getContent();
int attachmentCount = multipart.getCount();
由於它的工作。 – TheDevMan
我沒有足夠的聲譽上接受的解決方案發表評論:
Multipart multipart = (Multipart) message.getContent();
int attachmentCount = multipart.getCount();
但我不認爲它是理想的原因如下:
許多電子郵件客戶端[例如:雷鳥]發送所有的HTML電子郵件作爲多部件/替代品的危險。它們包括一個HTML部分和一個替代純文本部分。從歷史上看,這是爲了讓客戶選擇他們能夠展示的最佳替代品。
並非所有作爲零件包含的都是附件。例如,許多圖像不會顯示爲電子郵件客戶端中的附件,因爲它們的配置設置爲「內聯」。
總之,這種解決方案可能計算所有HTML電子郵件具有附件和使用內聯圖像作爲具有附件的所有郵件。
這裏是忽略的部分一般不認爲附件的選擇:
private int getAttachmentCount(Message message) {
int count = 0;
try {
Object object = mMessage.getContent();
if (object instanceof Multipart) {
Multipart parts = (Multipart) object;
for (int i = 0; i < parts.getCount(); ++i) {
MimeBodyPart part = (MimeBodyPart) parts.getBodyPart(i);
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition()))
++count;
}
}
} catch (IOException | MessagingException e) {
e.printStackTrace();
}
return count;
}
我知道,這個解決方案得到了身體的一部分,但我相信這是唯一正確的方法,如果它是一個附件。
問候, 格倫
退房這個帖子:http://stackoverflow.com/questions/1748183/download-attachments-using-java-mail – Melanie