从Apex代码发送的日语的电子邮件中,字符串损坏,如何编码?
-
30-09-2019 - |
题
我写了Visualforce页面,您可以发送电子邮件。它的英语功能正常。但是,当我在电子邮件主体部分中键入日语时,我的电子邮件收件箱有问号而不是日语。
Gmail中的正文显示在所有人中 ?
??????????????????????????
我想我需要编码字符串?但是如何在Apex代码中进行操作? Encodutil类几乎没有方法,但不需要编码字符串。
代码
public PageReference sendEmail() {
Messaging.SingleEmailMessage mail = new Messaging.singleEmailMessage();
//subject
subject = 'my subject';
mail.setSubject(subject);
//set sender name
mail.setSenderDisplayName('im sender');
//set recipient
emailTo = 'test@test.com'; //test sample email address
mail.setToAddresses(new String[]{emailTo});
//set body
String bodyText = '送信者'; //add Japanese to body
mail.setPlainTextBody(bodyText);
try{
Messaging.SendEmailResult[] resultMail = Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
if(resultMail[0].isSuccess())
response = 'ok sent!';
else{
response = resultMail[0].getErrors().get(0).getMessage();
}
}catch(System.EmailException ex){
response = ex.getMessage();
}
}
解决方案
我找到了解决方案,所以让我分享...
Messaging.SingleEmailMessage
类具有功能 setCharset()
因此,在我的问题中,我只需要提供日语编码 "SHIFT-JIS"
mail.setCharset('Shift-JIS');
解决了 :)
其他提示
您应该将其设置为使用UTF8 UTF-8
因此,您将不仅限于日语。
不隶属于 StackOverflow