使用java邮件服务和短信不支持外语

时间:2014-02-24 05:37:24

标签: java google-app-engine javamail

我正在接受????发件人姓名,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());

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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字符,您就可以将它与mimeMessage.setSubject(subj,“utf-8”)和新的InternetAddress(地址,个人,“utf-8”)一起使用。