:-(適切にメッセージを書き換えません。あなたのファイルからMimeMessage
を作成し、見つけますそのコンテンツ転送エンコーディングあなたは、変更MimeBodyPart.setHeader("Content-Transfer-Encoding", "quoted-printable")
を呼び出し、MimeMessage.writeTo()
経由結果のメッセージを書きたい体の部分本の線に沿って
何か:。
Session session = Session.getInstance(new Properties());
MimeMessage mm = new MimeMessage(new FileInputStream(msgfile));
// assuming we know that it's a multipart; otherwise, check Content-Type first...
MimeMultipart multi = (MimeMultipart) mm.getContent();
for (int i = 0; i < multi.getCount(); i++) {
MimeBodyPart mbp = (MimeBodyPart) multi.getBodyPart(i);
mbp.setHeader("Content-Transfer-Encoding", "quoted-printable");
}
mm.saveChanges();
mm.writeTo(new FileOutputStream(outfile));
MimeMessage
は、メッセージを変更したときにデフォルトでMessage-ID
ヘッダーをリセットすることに注意してください。これを望まない場合は、MimeMessage.updateMessageID()
をノーオペレーションに上書きしてください。
ありがとうございます。 JavaMailのMimeMessageオブジェクトを変更すると、ネストされたMultipartで正常に動作しません。あなたのソリューションでは、一部の部品は更新されますが、一部の部品は更新されません。 JavaMailではよく知られている問題だと思う(http://labs.consol.de/lang/en/blog/java/java-mail/removing-attachments-with-javamail/を参照)。 – Antares
サンプルコードでは、ネストされたマルチパートは処理されません。それはあなたが使用したいかもしれない機能を示すための単なるガイドラインです。あなたは実際に記事で言及された問題を展示する再帰的プログラムを書いたことがありますか?ストリームから解析されたメッセージにはその問題はないはずです... – dkarp