我写了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 因此,您将不仅限于日语。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top