[英]JavaMail base64 encoding
I have some Java code which sends out an email with code somewhat like the following: 我有一些Java代码发送一封电子邮件,其代码如下:
MimeBodyPart part = new MimeBodyPart();
part.setContent(htmlString, "text/html; charset=\"UTF-8\"");
part.setHeader("MIME-Version", "1.0");
part.setHeader("Content-Type", "text/html; charset=\"UTF-8\"");
part.setHeader("Importance", severityVal);
mimeMultiPart.addBodyPart(htmlPart);
mimeMessage.setContent(mimeMultiPart);
... and so on. ... 等等。
How can I encode the "part" MimeBodyPart in base64 for this outgoing email? 如何在base64中为此传出电子邮件编码“part”MimeBodyPart?
Q: Even though JavaMail does all the encoding and decoding for me, I need to manually control the encoding for some body parts. 问:尽管JavaMail为我做了所有编码和解码,但我需要手动控制某些身体部位的编码。 A: In the rare case that you need to control the encoding, there are several ways to override JavaMail's default behavior. 答:在极少数情况下,您需要控制编码,有几种方法可以覆盖JavaMail的默认行为。 A simple approach is as follows. 一种简单的方法如下。 After creating the entire message, call msg.saveChanges()
and then use something like mbp.setHeader("Content-Transfer-Encoding", "base64")
to force base64 encoding for the given body part. 创建整个消息后,调用msg.saveChanges()
然后使用类似mbp.setHeader("Content-Transfer-Encoding", "base64")
来强制给定正文部分的base64编码。
Another approach is to subclass MimeBodyPart
and override the updateHeaders
method so that it first calls super.updateHeaders()
and then sets the Content-Transfer-Encoding
header as above. 另一种方法是子类化MimeBodyPart
并覆盖updateHeaders
方法,以便它首先调用super.updateHeaders()
,然后如上所述设置Content-Transfer-Encoding
标头。
simply add this statement: 只需添加此声明:
part.setHeader("Content-Transfer-Encoding", "base64");
after the lines of code that set part.setDataHandler(..)
or part.setContent(...)
, and the dataSource/Handler will adapt itself to match the content transfer encoding you just specified for the body part. 在设置part.setDataHandler(..)
或part.setContent(...)
的代码行之后 ,dataSource / Handler将自我调整以匹配您刚为body部分指定的内容传输编码。
You may also want to consider setting the headers by the same token, eg: 您可能还需要考虑使用相同的标记设置标头,例如:
part.setHeader("Content-Type", "application/octet-stream");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.