使用java的邮件服务和文本消息不支持外语

使用java的邮件服务和文本消息不支持外语,java,google-app-engine,jakarta-mail,Java,Google App Engine,Jakarta Mail,我得到了????用于发件人姓名、ics附件和文本消息。 我用过的邮件 MailService mailService = MailServiceFactory.getMailService(); MailService.Message message = new MailService.Message(); String senderName = appInfo.getEmailInfo().getSenderName()!=null; senderName

我得到了????用于发件人姓名、ics附件和文本消息。 我用过的邮件

MailService mailService   = MailServiceFactory.getMailService();
MailService.Message message   = new MailService.Message();
String senderName             = appInfo.getEmailInfo().getSenderName()!=null;
senderName                    = StringEscapeUtils.unescapeHtml(senderName);
用这个很好。当我使用multipart时,它不起作用

Multipart multipart          = new MimeMultipart("alternative");
message.setSubject(StringEscapeUtils.unescapeHtml(subject));
message.setSentDate(new Date());
MimeBodyPart messagePart     = new MimeBodyPart();
messagePart.setContent(messageContent, mailType +"; charset=utf-8");
附件

MimeBodyPart attachmentPart  = new MimeBodyPart();
attachmentPart.setHeader("Content-Type", "text/plain;charset=utf-8");
attachmentPart.setText(attachment);
对于我用过的短信

String customerAddress        = StringEscapeUtils.unescapeHtml(customerContact.getAddress());

有人能帮我吗。

不需要在HTML中转换发件人和主题。将它们设置为字符串。

选择一个工作不正常的字符串。使用以下方法打印原始值:

private static void printString(String s) {
    System.out.printf("String: %s%n");
    for (char c : s.toCharArray())
        System.out.printf("%4x %c%n", (int)c, c);
}

然后使用相同的方法打印转换后的值。发布结果。然后我们就能知道出了什么问题。字符串需要具有正确的Unicode字符,而不是html转义,而不是UTF-8字节。一旦字符串具有正确的Unicode字符,您就可以将其与mimessage.setSubject(subj,“utf-8”)和新的InternetAddress(address,personal,“utf-8”)一起使用。

您是否实际使用utf-8编码?我使用utf-8编码我通过输入标记获取语言值,然后再存储我正在执行的htmlEscape()现在我正在将它们转换为StringEscapeUtils.unescapeHtml(),然后我将内容类型转换为utf-8,如果我有什么错误,请您帮助我。在接受输入时尝试删除HTML escape。我有一个用于HtmleCape的函数,我为每个HTML实体提供了一个Unicode,例如,此字母ä等效为ä;,我直接将该值存储在数据存储中;我在前端级别得到了这个值,但现在问题出现在java邮件服务和SMS服务中。我不知道该由谁来做。我想帮你,但你没有照我上面说的做。htmlDecode是否转换ä;去哪里?您是否使用上述方法获得该字符的正确Unicode值?