添付ファイル付きのメールを受信して、メールの内容をオブジェクトに保存
目的
salesforceにて、添付ファイル付きのメールを受信して、メールの内容をオブジェクトに保存する
ポイント
- まずは、Messaging.InboundEmailHandler インターフェースを実装したクラスを作成する必要があります。サンプル・コードを参考にして、クラスを作成してください。
- 次に、salesforceがメールを受信するアドレスを設定する必要があります。以下のメニューから設定を行います。
- [設定] > [アプリケーションの設定] > [開発] > [電子メールサービス]
[新規電子メールサービス]をクリックし、先ほど作成したクラスを[Apexクラス]に設定し、[有効]にチェックを入れて[保存 & 新規電子メールアドレス]ボタンをクリックします。 - 続いて[保存]ボタンをクリックします。
- [許可する送信元]に、メール受入元となるメールアドレスまたはドメインを指定します。制限をしない場合には、この項目は空にしておきます。
- [保存ボタン]をクリックします。
- メールの取り込み対象となる電子メールアドレスが表示されています。このメールアドレスに直接送付する、もしくは自社メールサーバに届いたメールをこのメールアドレスにリダイレクトすることで、メールの取り込みを行うことができます。
- [設定] > [アプリケーションの設定] > [開発] > [電子メールサービス]
サンプルコード
global class TestHandler implements Messaging.InboundEmailHandler { global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) { // 受信したメールの内容をTestObject__cに格納 TestObject__c obj = new TestObject__c(); obj.title__c = email.subject; obj.comment__c = email.plainTextBody; insert obj; // メールの添付ファイルを、先ほど作成したTestObject__cのレコードに紐付け List<Attachment> atts = new List<Attachment>(); List<Messaging.Inboundemail.Binaryattachment> batts = email.binaryAttachments; if (batts != null && batts.size() > 0){ for (Messaging.Inboundemail.Binaryattachment batt: batts){ Attachment att = new Attachment(); // ファイル名を設定 att.name = batt.fileName; // ファイルの内容を設定 att.Body = batt.body; // 紐付け先を設定 att.ParentId = obj.id; atts.add(att); } insert atts; } // 受信メールの処理が成功したのでresultをsuccessに Messaging.InboundEmailResult result = new Messaging.InboundEmailresult(); result.success = true; return result; } }
制限事項
参考資料
Force.com Apex Code Developer's Guide
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_inbound.htm