プログラマ38の日記

主にプログラムメモです。

Salesforce: メールの文字コードについて

Salesforceからメールを送信する時の文字コードではまったのでメモです。

(はまったのはユーザ情報でメールの文字コードを「Shift_JIS」にしていたのに、送信されたメールで丸数字"①"などが化けていたという事象です。原因はメールテンプレートの文字コードが「JIS」でした。。)

 

Salesforceでは次の2箇所でメールの文字コードを指定することができます。

・メールテンプレートでの指定

f:id:crmprogrammer38:20180125094735p:plain

・ユーザ情報での指定

f:id:crmprogrammer38:20180125095023p:plain

 

上記で指定した文字コードがどのメール送信時に使用されるかは次のようになります。

メールを送る方法 使用される文字コード
ワークフローでのメールアラート メールアラートで指定したメールテンプレートの文字コード
活動履歴関連リストのメール送信 テンプレートを選択した場合:
選択したメールテンプレートの文字コード
テンプレートを選択しない場合:
ユーザ情報のメールの文字コード
ケースの関連リストのメール(メールメッセージ) テンプレートを選択した場合:
選択したメールテンプレートの文字コード
テンプレートを選択しない場合:
ユーザ情報のメールの文字コード
Apex Class
Messaging.sendEmailでMessaging.SingleEmailMessageを送信する
setCharsetで文字コード指定した場合:
指定した文字コード
setCharsetで文字コードを指定しない場合:
ユーザ情報のメールの文字コード
SOAP API
sendEmailでSingleEmailMessageを送信する
setCharsetで文字コード指定した場合:
指定した文字コード
setCharsetで文字コードを指定しない場合:
ユーザ情報のメールの文字コード

※Apex ClassとSOAP APIのsendEmailで、MassEmailMessageを送信した時の文字コードは未調査です。。

 

最後に

基本的に、メールテンプレートを使う場合はメールテンプレートの文字コードが優先されます。

日本語環境でSalesforceの設定を行うと、ユーザ情報やメールテンプレートの文字コードはデフォルトで「日本語(JIS)」が選択されています。

そのまま保存してしまうと、JISのためメール送信時に丸数字などが文字化けとなってしまいます。

特に、メールテンプレートを利用者が作成する運用を取る場合に気をつけないといけないなーと思いました。

 

でも、未だにメールのデフォルトがJISって1990年代の話のような気がして感慨深いものがあります。今ならUTF-8でもいいのではないかなーと思いました。