2

生の 8 ビット部分を含む MIME 電子メールを、7 ビット部分のみを含む RFC822 準拠のメッセージに変換する最も簡単な方法は何ですか?
パーツは自動的に「Content-Transfer-Encoding: quoted-printable」に変換する必要があります。

私のアプリは Java で開発されています。しかし、コマンドライン ツールは素晴らしいものです。私はreformimeを試しましたが、このツールはバグがあるようで、メッセージを適切に書き換えません:-(

助けてくれてありがとう、
オリビエ

4

1 に答える 1

2

JavaMailは良い解決策のようです。ファイルからを作成し、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、デフォルトではヘッダーがリセットされることに注意してください。これが不要な場合は、no-opMessage-IDにオーバーライドします。MimeMessage.updateMessageID()

于 2011-01-21T02:24:09.897 に答える