Salesforceのメールサービスを実装する方法

Posted by

概要

本記事は、Salesforceのメールサービスを実装する方法を簡単に記載します。
ちなみにメールサービスとは、「Apexクラスを使用して受信メールを処理する自動化されたプロセス」という機能となります。
具体的には、Webサイトやフォームで受け付けた内容をSalesforceへメールとして送信することで、メールの情報を元にApexのプログラムでオブジェクトにレコードを作成したりすることができるものとなります。

作成手順

Messaging.InboundEmailHandlerインターフェースを実装したApexクラスを作成

まずは、メールサービスに必要となるInboundEmailHandlerの実装クラスを作成します。このクラスでhandleInboundEmailメソッドを使用して、InboundEmail オブジェクトにアクセスし、受信メールメッセージの内容、ヘッダー、および添付ファイルの取得と、その他多数の機能を実行します。

下記のサンプルコードでは、受信したメールの内容を元にケースを作成しております。また、受信メールアドレスが一致する取引先責任者があれば、リレーションをはるような考慮もいれております。

メールサービスの作成

メール受信時に呼び出すApexを指定してメールサービスを作成します。

メールアドレスを追加

作成したメールサービスに対して、送信先となるメールアドレスを作成します。
設定するメールアドレスの部分が@より前の部分になり、ドメインは作成時に自動で生成されます。

■注意点
「コンテキストユーザ」に設定するユーザが、Apexの実行ユーザとなるのでApex内でアクセスするオブジェクト(今回はケースオブジェクト)を更新する権限がないと、オブジェクト登録のApexがエラーになります。

設定完了、メールアドレスの確認

作成したメールアドレスを確認します。

実際にメールを送信して確認

今回のサンプルプログラムでは正常に動作した場合は、メールの件名、本文でケースが作成されているはずです。エラーが発生した場合は、送信元のメールアドレスにメールが届きます。

ガバナ制限

1日に処理できるガバナの制限値は、ユーザライセンス数 x 1,000 で算出され、最大値は 1,000,000 です。たとえば、ライセンス数が 10 の場合、1 日最大 10,000 件のメールメッセージとなるようです。

参考

メールサービス
https://help.salesforce.com/articleView?id=code_email_services.htm&type=5

Apex メールサービス
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_classes_email_inbound_what_is.htm