🐴
Salesforce:メール取り込んでSalesforceにレコード追加したい(サンプルコード付き)
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;
}
}
メールサービスを作成
-
設定→メールサービス→作成
-
Apexクラス名→先程作成したApexクラスを指定
-
作成したメールサービスを再度開き、新規メールアドレス からメールアドレスを追加
-
メールを送信
-
レコードが作成される
以上!
Discussion