うちの会社では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のデータを確認してみると取引先、取引先責任者に登録されていました!
