tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Messaging.InboundEmailHandlerについて

Messaging.InboundEmailHandlerの使い方についてです。メール受信時にApexクラスを呼び出すことができます。例えば取引先責任者からメールを受信したときに対象の取引先責任者に紐付くToDoを作成したりできます。この機能を使うにはApexクラスの作成と設定画面からメールサービスの設定が必要になります。

1.Apexクラスの作成

Apexクラスのサンプルソースです。

2.メールサービスの設定

続いてメールサービスの設定方法についてです。開発→メールサービスから設定を行います。
f:id:tyoshikawa1106:20130731204526p:plain

登録内容は次のような感じになります。
f:id:tyoshikawa1106:20130731204738p:plain

  • メールサービス名

名前です。API名ではないので日本語でOKです。

  • Apex クラス

メール受信時に実行される対象のApexクラスです。
implements Messaging.InboundEmailHandlerの宣言してあるクラスが対象です。

  • 受け入れる添付ファイル

テキストファイルかバイナリファイルか...などの選択ができます。

  • 高度なメールセキュリティ設定

メールのセキュリティチェックが厳しくなるみたいです。

  • 許可する送信元

@より先のドメイン部分を指定します。そこからのメールのみ許可されます。
対象外からのメールが届いた場合はApexクラスは呼び出されません。

  • テキスト添付ファイルをバイナリ添付ファイルに変換

チェックをつけると変換できるみたいです。

  • 有効

有効か無効かの判定チェックボックスです。有効にしないと動きません。

  • 失敗時のレスポンス設定

このメールサービスへのアクセスが以下の理由でエラーになった場合の Salesforce による処理方法を設定します。...とのことです。


メールサービスの大まかな設定内容はこんな感じです。

3. メールアドレスの設定

メールサービス設定後に詳細画面の関連リストからメールアドレスの登録を行います。登録後に自動生成されたアドレスに対してメールを送信して使用する流れとなります。
f:id:tyoshikawa1106:20130731205826p:plain

最初メールアドレス関連リストには何も登録されていないので、新規メールアドレスボタンから登録を行います。

例えばこんな感じに入力します。
f:id:tyoshikawa1106:20130731210119p:plain

  • メールアドレス

ここには@より前のローカル部分を指定します。
xxx@gmail.comの場合はxxxと入力します。

  • 有効

有効にしないと使えません。

  • コンテキストユーザ

???

  • 許可する送信元

ここで許可したアドレスのみ対象となります。


新規メールアドレスの登録が完了すると自動生成されたメールアドレスが使用できるようになります。このアドレスに対してメールを送信するとInboundEmailの処理が実行されます。

※補足
自動生成されたアドレスはそのまま使用するのではなく、転送して使用するといった使い方ができます。顧客からメールを受け取るためのサポート用メールアドレスを用意してそこにきたメールは自動生成されたアドレスへ転送するように設定します。こうすることで自動生成したアドレスを表に出さずに使用することができます。

使用方法

今回の設定ではGmailアドレスからのメールのみ許可するようになっています。またApexクラスでは送信元のメールアドレスを持つ取引先責任者に対してToDoを作成する処理が実装されています。なので取引先責任者に登録したGmailアドレスから自動生成されたアドレスにメールを送ることで動作を確認できます。

メールの送信

f:id:tyoshikawa1106:20130731211338p:plain

取引先責任者の確認

取引先責任者の活動関連リストにToDoが作成されていることが確認できます。
f:id:tyoshikawa1106:20130731211642p:plain

ToDoの詳細はこのようになります。
f:id:tyoshikawa1106:20130731212220p:plain

メールに添付ファイルをつけた場合は、ToDoの添付ファイル関連リストに保存されると思います。


Messaging.InboundEmailHandlerを使った機能の使い方はこんな感じです。