使用java mail迭代地从邮件中获取所有附件
下面是我可以用来从邮件中获取所有附件的递归方法使用java mail迭代地从邮件中获取所有附件,java,email,recursion,email-attachments,mime,Java,Email,Recursion,Email Attachments,Mime,下面是我可以用来从邮件中获取所有附件的递归方法 public List<InputStream> getAttachments(Message message) throws Exception { Object content = message.getContent(); if (content instanceof String) return null; if (content inst
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;
}
public List getAttachments(消息)引发异常{
对象内容=message.getContent();
if(字符串的内容实例)
返回null;
if(多部分的内容实例){
多部分多部分=(多部分)内容;
列表结果=新建ArrayList();
对于(int i=0;i
如果不使用递归,这可以实现吗?因为递归会消耗堆栈中相当大的空间。简短回答:是的,因为任何可以递归完成的事情也可以迭代完成。@Makoto在这种情况下,我如何完成它?因为我发现,如果它是迭代建模的,那么它将永无止境。你真的理解这段代码吗?如果是这样,在迭代场景中,哪一部分似乎很难实现?如果您已经尝试编写版本并遇到问题,您最好与我们分享您的代码和您遇到的确切困难。@PM77-1当然我理解代码。我在思考这种情况时遇到了困难,在这种情况下,模式多次迭代,就像身体内部的多部分一样