प्रश्न बहुत पुरानी है, लेकिन शायद यह किसी को मदद मिलेगी। मैं डेविड राबिनोवित्ज़ के जवाब का विस्तार करना चाहता हूं।
if(!Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition()))
आपको सभी उम्मीदों को वापस नहीं लौटाया जाना चाहिए, क्योंकि आपके पास मेल हो सकता है जहां मिश्रित भाग परिभाषित स्वभाव के बिना है।
----boundary_328630_1e15ac03-e817-4763-af99-d4b23cfdb600
Content-Type: application/octet-stream;
name="00000000009661222736_236225959_20130731-7.txt"
Content-Transfer-Encoding: base64
इसलिए इस मामले में, आप फ़ाइल नाम की जांच भी कर सकते हैं। इस तरह:
if (!Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition()) && StringUtils.isBlank(part.getFileName())) {...}
संपादित
पूरे काम कर रहे .. ऊपर descibed शर्त का उपयोग कोड क्योंकि प्रत्येक भाग एक और भागों और लगाव को संपुटित कर सकते हैं में नेस्ट किया जाना चाहिए, प्रत्यावर्तन सभी भागों के माध्यम से पार करने के लिए इस्तेमाल किया जाता है
public List<InputStream> getAttachments(Message message) throws Exception {
Object content = message.getContent();
if (content instanceof String)
return null;
if (content instanceof Multipart) {
Multipart multipart = (Multipart) content;
List<InputStream> result = new ArrayList<InputStream>();
for (int i = 0; i < multipart.getCount(); i++) {
result.addAll(getAttachments(multipart.getBodyPart(i)));
}
return result;
}
return null;
}
private List<InputStream> getAttachments(BodyPart part) throws Exception {
List<InputStream> result = new ArrayList<InputStream>();
Object content = part.getContent();
if (content instanceof InputStream || content instanceof String) {
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition()) || StringUtils.isNotBlank(part.getFileName())) {
result.add(part.getInputStream());
return result;
} else {
return new ArrayList<InputStream>();
}
}
if (content instanceof Multipart) {
Multipart multipart = (Multipart) content;
for (int i = 0; i < multipart.getCount(); i++) {
BodyPart bodyPart = multipart.getBodyPart(i);
result.addAll(getAttachments(bodyPart));
}
}
return result;
}
यह मेरे लिए एक बहुत ही उपयोगी सवाल था, यह अधिक वोटों के हकदार है! यह पूछने के लिए धन्यवाद। – Yottagray