Apexコードから日本語が送信された電子メールは文字列が壊れていますが、エンコードする方法は?

StackOverflow https://stackoverflow.com/questions/4141799

質問

メールを送信できる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 したがって、あなたは日本語だけに制限されることはありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top