将整个 html 文件读取字符串转换为 Unicode 我使用下面的代码使用 FileUtils 将整个 HTML 文件读取为字符串
String contents = FileUtils.readFileToString(new File("/path/to/the/HTMLfile"), "UTF-8")
我试图用中文、阿拉伯文、日文和西班牙文发送一封电子邮件。因此,在发送时,我在 MimeMessage 和 MimeMultipart 中设置内容时无法弄清楚
因此,我将整个文件作为字符串读取,然后检查该字符是否介于 1-128 之间,即属于 ASCII 的 ASCII 等效字符(数字特殊字符空间等)。我将它们保留在字符串中,其余所有字符都转换为 Unicode
将 html 文件字符串转换为 Unicode 字符串,然后在 mime body part 和 mime multipart 中设置的函数。希望很清楚
public String convertToUniCode(String yourHTMLBodyStr) {
String str = "<div>Chinese 你好嗎 English How are you Japanese お元気ですか Arabic كيف حالك Spanish cómo estás</div>";
String[] codePointAt = new String[str.length()];
for (int j = 0; j < str.length(); j++) {
int charactercode = Character.codePointAt(str, j);
if (charactercode > 0 && charactercode < 128) {
codePointAt[j] = String.valueOf(str.charAt(j));
} else {
codePointAt[j] = "&#" + String.valueOf(charactercode) + ";";
}
}
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < codePointAt.length; i++) {
strBuilder.append(codePointAt[i]);
}
System.out.println("New String :: " + strBuilder.toString());
}
输出(Unicode 字符串)与 Like 㺃 :
新字符串 :: Chinese 你好吗 英语 How are you Japanese 元気ですか 阿拉伯语 كيف حالك 西班牙语 cómo estás
MimeMessage msg = new MimeMessage(session);
String htmlUnicodeStr = convertToUniCode(yourHTMLBodyStr);
msg.setSubject(UniCodeSubject, "UTF-8"); // here you specify your subject encoding
Multipart emailMimeMultipart;
MimeBodyPart messageBody = new MimeBodyPart();
messageBody.setDataHandler(new DataHandler(new ByteArrayDataSource(htmlUnicodeStr, "text/html")));
emailMimeMultipart.addBodyPart(messageBody);
//Add UTF-8 In MimeMultiPart While Setting Content and Transport.Send()