サイトアイコン いろいろ備忘録

【Salesforce】メールでの申込をSalesforceで自動的に処理してみる

うちの会社ではWEBでお客様からのサービス利用のお申込みを受け付けています。WEBでお申込みがあったときにお客様の情報がSalesforceに自動的に登録されたら便利ですよね。

Salesforceにはメールを受信した際に自動的に処理を実行するメールサービスという仕組みがあります。WEBで申込みがあったときの通知メールの宛先をSalesforceに向けることでWEB申込の自動処理を実装できます。

Apexの実装

まずはメールサービスのApexを実装します。下にサンプルを載せます。

1行目にメッセージ、2行目に会社名、3行目にお客様の姓、4行目にお客様の名というシンプルな内容のメールを受信して、その内容を取引先責任者オブジェクト、取引先オブジェクトに登録するという処理です。

global class MailApplicationHandler implements Messaging.InboundEmailHandler {
	global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) {
	    Messaging.InboundEmailResult result = new Messaging.InboundEmailresult();

        //メール情報取得
        String mailBody=email.plainTextBody;
        String mailAddress=email.fromAddress;
        String mailSubject = email.subject;
        List<String> toAddress = email.toAddresses;

        //改行で区切り配列に格納
        String[] lines = mailBody.split('\n');

        //取引先の登録
        Account acnt = new Account();
        acnt.Name = lines[1];
        insert acnt;

        //取引先責任者の登録
        Contact cnt = new Contact();
        cnt.Lastname = lines[2];
        cnt.Firstname = lines[3];
        cnt.AccountId = acnt.Id;
        insert cnt;

        return result;
    }
}

Messaging.InboundEmailHandlerインタフェイスを実装し、handleInboundEmailメソッドで処理を記述します。

設定画面

Apexのコードを完成させたら次に設定画面での設定を行います。

Salesforceの設定画面を起動し「メールサービス」の画面に行きます。

以下の画面で「新規メールサービス」をクリックします。

メールサービス名欄には何か適当なタイトル、Apex クラス欄には上で作成したクラスのクラス名を入力します。メールサービスをすぐ使用するならば「有効」をチェックして「保存&新規メールアドレス」を押します。

他の項目については説明を割愛します。(というかよくわかってない)

メールサービス用のメールアドレスを発行する画面です。メールアドレス名欄には何かタイトル的なこと、メールアドレス欄には発行するメールアドレスのアカウントに設定する値を入力します。

すぐにこのメールアドレスを使用可能にするには「有効」にチェックを入れて保存を押します。

画面の下の方のメールアドレス欄にやたら長いメールアドレスが表示されます。このメールアドレスにメールが届くと同時に先ほどのApexクラスが起動しメールを処理するということになります。

WEBなどからの申込をSalesforceで自動処理したい場合、通知のメールの宛先をこのSalesforceのアドレスにします。

実際にメールを送ってみた

早速動作確認してみました。次のようなメールを上で発行したメールアドレスに送りました。

申込をします。
ほにゃらら株式会社
ほにゃ田
ほにゃ太郎

メール送信後、Salesforceのデータを確認してみると取引先、取引先責任者に登録されていました!

モバイルバージョンを終了