我正在使用 Apache James 创建电子邮件。我将 TextBody 添加到带有 text/html 内容的消息中:
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;
我不知道为什么它不添加字符集信息。编码是正确的,但在电子邮件客户端中,您必须在某些客户端中手动选择它。
有什么帮助吗?
提前致谢!
康拉德