Newer Version Available
InboundEmail オブジェクトの使用
Apex メールサービスドメインが受信するすべてのメールについて、Salesforce は、そのメールの内容と添付ファイルを含む個別の InboundEmail オブジェクトを作成します。Messaging.InboundEmailHandler インターフェースを実装する Apex クラスを使用して、受信メールメッセージを処理できます。そのクラスで handleInboundEmail メソッドを使用して、InboundEmail オブジェクトにアクセスし、受信メールメッセージの内容、ヘッダー、および添付ファイルの取得と、その他多数の機能を実行することができます。
例 1: 取引先責任者の ToDo の作成
受信メールアドレスに基づいて取引先責任者を検索し、新規 ToDo を作成する方法の例は次のとおりです。
1global class CreateTaskEmailExample implements Messaging.InboundEmailHandler {
2
3 global Messaging.InboundEmailResult handleInboundEmail(Messaging.inboundEmail email,
4 Messaging.InboundEnvelope env){
5
6 // Create an InboundEmailResult object for returning the result of the
7 // Apex Email Service
8 Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
9
10 String myPlainText= '';
11
12 // Add the email plain text into the local variable
13 myPlainText = email.plainTextBody;
14
15 // New Task object to be created
16 Task[] newTask = new Task[0];
17
18 // Try to look up any contacts based on the email from address
19 // If there is more than one contact with the same email address,
20 // an exception will be thrown and the catch statement will be called.
21 try {
22 Contact vCon = [SELECT Id, Name, Email
23 FROM Contact
24 WHERE Email = :email.fromAddress
25 LIMIT 1];
26
27 // Add a new Task to the contact record we just found above.
28 newTask.add(new Task(Description = myPlainText,
29 Priority = 'Normal',
30 Status = 'Inbound Email',
31 Subject = email.subject,
32 IsReminderSet = true,
33 ReminderDateTime = System.now()+1,
34 WhoId = vCon.Id));
35
36 // Insert the new Task
37 insert newTask;
38
39 System.debug('New Task Object: ' + newTask );
40 }
41 // If an exception occurs when the query accesses
42 // the contact record, a QueryException is called.
43 // The exception is written to the Apex debug log.
44 catch (QueryException e) {
45 System.debug('Query Issue: ' + e);
46 }
47
48 // Set the result to true. No need to send an email back to the user
49 // with an error message
50 result.success = true;
51
52 // Return the result for the Apex Email Service
53 return result;
54 }
55}