Apache James を使用して電子メール メッセージを作成しています。text/html コンテンツを含むメッセージに TextBody を追加します。
for (int i = 0, bodyPartsSize = bodyParts.size(); i < bodyPartsSize; i++) {
BodyPart bodyPart = (BodyPart) bodyParts.get(i);
if ("text/html".equalsIgnoreCase(bodyPart.getMimeType()) {
TextBody originalBody = (TextBody) bodyPart.getBody();
byte[] bytes = IOUtils.toByteArray(originalBody.getInputStream());
byte[] msgBytes = convert(bytes);
String charset = bodyPart.getCharset();
TextBody newBody = new StorageBodyFactory().textBody(new ByteArrayInputStream(msgBytes), charset);
BodyPart bp = new BodyPart();
bp.setBody(newBody, bodyPart.getMimeType());
mp.replaceBodyPart(bp, i);
}
}
残念ながら、メッセージを送信すると、出力に文字セット情報がありません。
元のメッセージには:
--Apple-Mail-7-654436364
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=iso-8859-2
変換された:
--Apple-Mail-7-654436364
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
文字セット情報を追加していない理由がわかりません。エンコーディングは正しいですが、電子メール クライアントでは、一部のクライアントで手動で選択する必要があります。
何か助けはありますか?
前もって感謝します!
コンラッド