私はjavamailとimapを使って電子メールから新しい電子メールの添付ファイルをすべてダウンロードしようとしています。これは、すべてのいくつかの添付ファイルがPDFファイルであり、私の文Javamailダウンロードbase64添付
if (msg.getContent() instanceof Multipart)
はその[email protected]以来、キャッチいけないBASE64、としてデコード方法をこれまでに、正常に動作します。
この添付ファイルを入手してハードドライブにダウンロードするにはどうすればよいですか?
これまで試みたことがあり、最初のIFステートメントはBase64デコードで添付ファイルをキャッチします。
for (Message msg : messages) {
Address[] fromAddress = msg.getFrom();
String from = fromAddress[0].toString();
String subject = msg.getSubject();
String sentDate = msg.getSentDate().toString();
String messageContent = "";
String attachFiles = "";
System.out.println(msg.getContent());
if (msg.getContent() instanceof BASE64DecoderStream)
{
BASE64DecoderStream base64DecoderStream = (BASE64DecoderStream) msg.getContent();
byte[] byteArray = IOUtils.toByteArray(base64DecoderStream);
}
if (msg.getContent() instanceof Multipart) {
Multipart multipart = (Multipart) msg.getContent();
for (int i = 0; i < multipart.getCount(); i++) {
Part part = multipart.getBodyPart(i);
String disposition = part.getDisposition();
if ((disposition != null) &&
((disposition.equalsIgnoreCase(Part.ATTACHMENT) ||
(disposition.equalsIgnoreCase(Part.INLINE))))) {
MimeBodyPart mimeBodyPart = (MimeBodyPart) part;
String fileName = mimeBodyPart.getFileName();
attachFiles += fileName;
File fileToSave = new File(fileName);
mimeBodyPart.saveFile(saveDirectory + File.separator + fileToSave);
System.out.println("saved attachment: " + fileName + " to disk at: " + saveDirectory);
}
}
}
System.out.println("\t From: " + from);
System.out.println("\t Subject: " + subject);
System.out.println("\t Sent Date: " + sentDate);
System.out.println("\t Attachments: " + attachFiles);
System.out.println("");
}
}
添付ファイルをディスクにダウンロードする簡単で簡単な方法がある場合は、NodeJSを使用することもできます。ノード-imapを試しましたが、同じエラーが発生しました。
[OutputStreamにJava InputStreamの内容を簡単に書き込むことができます](https://stackoverflow.com/questions/43157/easy-way-to-write-contents-of-a-java-inputstream)の可能な複製出力ストリームへの) – jmehrens