🐴

Salesforce:メール取り込んでSalesforceにレコード追加したい(サンプルコード付き)

2021/01/23に公開

Salesforceにメールを送信するとデータ登録ができる。
Apexで開発することになるが、その分自由度は高い。
※Sandbox→本番に反映する際にはテストメソッドを書く必要がある。

設定手順

Apexクラス作成

global class MailServiceToCase implements Messaging.InboundEmailHandler {
    global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) {
 		Messaging.InboundEmailResult result = new Messaging.InboundEmailresult();
        result.success = true;
        
        //メール情報取得
        String mailBody=email.plainTextBody;
        String mailAddress=email.fromAddress;
        String mailSubject = email.subject;
        System.debug(mailBody);
        System.debug(mailAddress);
        try{
            // Contactが存在するかを確認する
            Contact[] contact = [SELECT Id FROM Contact WHERE Email = :mailAddress];
            Case insertCase = new Case();
            if(contact.size() != 0){
            	insertCase.ContactId = contact[0].Id;
            }
            // 件名
            insertCase.Subject = mailSubject;
            // 本文
            insertCase.Comments = mailBody;
            insert insertCase;
        }catch(Exception e){
            //何かしら例外発生時の通知文面
            //受信したメールの「reply-to」に指定したアドレスに対して送信される(未指定の場合はfrom)
            result.message = 'メールサービス処理でエラーが発生しました。\n';
            result.message += '\n';
            result.message += '【元メール】\n';
            result.message += mailBody ;
            result.message += '\n';
            result.message += '【エラーメッセージ】\n';
            result.message += e.getMessage();
            result.success = false;
        }
    	return result;
    }
}

メールサービスを作成

  1. 設定→メールサービス→作成

  2. Apexクラス名→先程作成したApexクラスを指定

  3. 作成したメールサービスを再度開き、新規メールアドレス からメールアドレスを追加

  4. メールを送信

  5. レコードが作成される

以上!

Discussion