Apexコードから日本語が送信された電子メールは文字列が壊れていますが、エンコードする方法は?
-
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
したがって、あなたは日本語だけに制限されることはありません。
所属していません StackOverflow