tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Visualforce メールテンプレートの作成について

メールテンプレートをVisualforceページで作成する方法についてです。コミュニケーションテンプレートのメールテンプレートから作成していきます。

f:id:tyoshikawa1106:20130926215438p:plain

Visualforceを選択します。
f:id:tyoshikawa1106:20130926215459p:plain

メールテンプレート名や一意の名称など必要事項を入力します。Visualforceのコードについては次の画面で記載することになります。
f:id:tyoshikawa1106:20130926215602p:plain

これをベースにカスタマイズしていきます。
f:id:tyoshikawa1106:20130928201135p:plain

プロパティの編集ボタン

メールテンプレート名や文字コードなどを変更することができます。
f:id:tyoshikawa1106:20130928201148p:plain

テンプレートの編集ボタン

Visualforce メールテンプレートの編集を行うことができます。作成時にデフォルトのコードが生成されているのでこれをカスタマイズしていく感じになります。
f:id:tyoshikawa1106:20130928203428p:plain

テストの検証と差し込み項目の検証ボタン

検証用のレコードを選択してOKボタンをクリックするとメール送信することができます。メールプレビューの送信先にチェックを付けると任意のアドレスにテストメールを送信できます。
f:id:tyoshikawa1106:20130928202908p:plain:w300

このようなメールが届いて確認できます。
f:id:tyoshikawa1106:20130928202951p:plain

バージョン設定関連リスト

おそらくパッケージ化した際に使用する項目だと思います。
f:id:tyoshikawa1106:20130928203703p:plain

Visualforce メールテンプレートのバージョン設定の管理

https://help.salesforce.com/HTViewHelpDoc?id=email_visualforce_version_settings.htm&language=ja

Visualforce 添付ファイル関連リスト

messaging:attachmentタグで添付ファイルを用意した際に自動で表示されます。このタグは添付ファイルを動的に生成したい場合に使用します。
f:id:tyoshikawa1106:20130928203710p:plain

標準添付ファイル関連リスト

ファイル添付ボタンからアップロードしたファイルが表示されます。固定のファイルを添付したい場合はこちらを使用します。
f:id:tyoshikawa1106:20130928203728p:plain

Visualforceメールテンプレートの作り方

Visualforceメールテンプレートはmessagingタグを使用して作成します。
messagingタグは次のような感じで使用します。

Visualforce メールテンプレートで使用できるのはmessaging:emailTemplateで囲われているもののみとなります。apex:pageタグは使用できません。messagingタグ内ではコンポーネントの使用も可能です。

このmessaging:emailTemplateタグ内で次のタグを記載することでメールの件名や本文、添付ファイルの作成といったことが可能です。

  • messaging:emailHeader
  • messaging:attachment
  • messaging:plainTextEmailBody
  • messaging:htmlEmailBody

EmailBody用のタグが2種類ありますが、テキスト形式のメールとHTML形式のメールということで用意されています。

Visualforce メールテンプレートの注意事項

Force.com Discussion Boardsで知ったのですがmessaging:attachmentで作成した添付ファイルの件名が日本語の場合に文字化けします。
f:id:tyoshikawa1106:20130928210310p:plain

Preview時には正常に表示されるのですが、メールに添付された際には上記のように文字化けしてしまいました。
f:id:tyoshikawa1106:20130928210412p:plain

URLENCODEも試してみたのですが防ぐことができないみたいです。ちなみに標準添付ファイルの方は日本語のファイル名を使用していても問題ないみたいです。

解決方法が見当たらないのでVisualforceメールテンプレートでmessaging:attachmentを使用する必要がある場合は日本語名を使用しないルールにした方が良さそうです。

PDF添付のメールアラート送信時のファイル名文字化け
http://goo.gl/ACQDUI


Visualforceメールテンプレートについてはだいたいこんな感じでした。メールの件名や本文を動的に変更するのは他のテンプレートでも可能ですが、PDFを動的に作成して添付できる機能はすごく便利だと思います。

ファイル名の文字化けといった注意点もありますが、ワークフローなどと組み合わせて自動生成した見積書などをメールに添付して送信するというような使い方ができたりするかなと思います。

apex:pageタグは使用できませんが、messagingタグ内でComponentを使用できるみたいなのでComponentのControllerを使用すればできることが広がりそうでした。