从顶点代码发送日语的电子邮件有断线,如何编码?

时间:2010-11-10 06:30:00

标签: unicode encoding salesforce apex-code visualforce

我编写了可以发送电子邮件的visualforce页面。它在英语中运行良好。 但是当我在电子邮件正文部分输入日文并发送它时, 我的电子邮件收件箱中有问号而不是日语。

gmail中的正文文本显示在所有?

??????????????????????????

我想我需要对字符串进行编码?但是如何在Apex代码中做到这一点? EncodeUtil类有很少的方法,但它不需要String进行编码。

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();
            }
}

2 个答案:

答案 0 :(得分:3)

我找到了解决方案,让我分享......

Messaging.SingleEmailMessage类有函数setCharset()

所以在我的问题的代码中,我只需要提供日语编码"SHIFT-JIS"

mail.setCharset('Shift-JIS');

解决了:)

答案 1 :(得分:2)

您应该将其设置为使用UTF8而不是UTF-8,因此您不会仅限于日语。