質問: java mailを使用して添付ファイルをダウンロードする すべてのメッセージをダウンロードし、保存しましたmessage[] temp; これらの各メッセージの添付ファイルのリストを取得するにはどうすればよいですかlist<file> attachments; 注:サードパーティのライブラリはありません。javamailのみ。
回答: 例外処理はありませんが、次のとおりです。list<file> attachments = new arraylist<file>(); for (message message : temp) { multipart multipart = (multipart) message.getcontent(); for (int i = 0; i < multipart.getcount(); i++) { bodypart bodypart = multipart.getbodypart(i); if(!part.attachment.equalsignorecase(bodypart.getdisposition()) && stringutils.isblank(bodypart.getfilename())) { continue; // dealing with attachments only } inputstream is = bodypart.getinputstream(); // -- edit -- security issue -- // do not do this in production code -- a malicious email can easily contain this filename: "../etc/passwd", or any other path: they can overwrite _any_ file on the system that this code has write access to! // file f = new file("/tmp/" + bodypart.getfilename()); fileoutputstream fos = new fileoutputstream(f); byte[] buf = new byte[4096]; int bytesread; while((bytesread = is.read(buf))!=-1) { fos.write(buf, 0, bytesread); } fos.close(); attachments.add(f); } }