Электронная почта с японским отправленным из APEX Code имеет сломанные строки, как кодировать?
-
30-09-2019 - |
Вопрос
Я написал страницу VisualForce, которую вы можете отправить электронную почту. Работает нормально на английском языке. Но когда я набрал японский раздел по электронной почте, и отправьте его, мой почтовый ящик имеет вопросы вместо японского языка.
текст тела в Gmail появляется во всех ?
??????????????????????????
Я думаю, что мне нужно кодировать строку? Но как сделать это в коде APEX? Класс EncodeUtil имеет несколько методов, но не принимает строку для кодирования.
код
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
Таким образом, вы не будете ограничены только японскими.