sendEmail()
構文
単一のメールメッセージでは、次のようになります。
1SendEmailResult = connection.sendEmail(SingleEmailMessage emails[]);一括メールメッセージに関して、次のようになります。
1SendEmailResult = connection.sendEmail(MassEmailMessage emails[]);使用方法
このコールは、Lightning プラットフォーム AppExchange アプリケーション、カスタムアプリケーションなどの、Salesforce 以外のアプリケーションで、メールの個別送信や一括送信を行う場合に使用します。メールでは標準的なメール属性 (件名行、BCC など) を含めることができ、Salesforce のメールテンプレートを使用することが可能です。平文テキストのほか HTML 形式もサポートされています。HTML メールの状況は、Salesforce を使って追跡できます。送信日、メールが最初に開かれた日、最後に開かれた日、開かれた回数などを確認できます(詳細は、Salesforce オンラインヘルプの「HTML メールの追跡」を参照してください)。
ログインユーザのメールアドレスは、メールヘッダーの [送信元アドレス] 項目に挿入されます。不在の返信も含め、返ってきたメールはすべてログインユーザに送信されます。不達管理が有効で、SingleEmailMessage.targetObjectId または MassEmailMessage.targetObjectIds が設定されている場合、不達は Salesforce によって自動的に処理され、該当するレコードが更新されます。それ以外の場合は、ログインユーザに送信されます。不達管理は取引先責任者とリードにのみ機能します。
サンプルコード —Java
このサンプルでは、メールメッセージを作成して、宛先、CC、BCC の各受信者、件名、本文テキストを含む項目を設定します。また、setTargetObjectId メソッドを使用して、ログインユーザの ID を受信者として設定します。これにより、指定されたユーザのメールアドレスにメールが送信されます。このサンプルでは、添付ファイルを作成し、添付ファイルを含むメールメッセージを送信します。最後に、状況メッセージまたはエラーメッセージがある場合はコンソールに書き込みます。
1public void doSendEmail() {
2 try {
3 EmailFileAttachment efa = new EmailFileAttachment();
4 byte[] fileBody = new byte[1000000];
5 efa.setBody(fileBody);
6 efa.setFileName("attachment");
7 SingleEmailMessage message = new SingleEmailMessage();
8 message.setBccAddresses(new String[] {
9 "someone@salesforce.com"
10 });
11 message.setCcAddresses(new String[] {
12 "person1@salesforce.com", "person2@salesforce.com", "003xx00000a1b2cAAC"
13 });
14 message.setBccSender(true);
15 message.setEmailPriority(EmailPriority.High);
16 message.setReplyTo("person1@salesforce.com");
17 message.setSaveAsActivity(false);
18 message.setSubject("This is how you use the " + "sendEmail method.");
19 // We can also just use an id for an implicit to address
20 GetUserInfoResult guir = connection.getUserInfo();
21 message.setTargetObjectId(guir.getUserId());
22 message.setUseSignature(true);
23 message.setPlainTextBody("This is the humongous body "
24 + "of the message.");
25 EmailFileAttachment[] efas = { efa };
26 message.setFileAttachments(efas);
27 message.setToAddresses(new String[] { "person3@salesforce.com" });
28 SingleEmailMessage[] messages = { message };
29 SendEmailResult[] results = connection.sendEmail(messages);
30 if (results[0].isSuccess()) {
31 System.out.println("The email was sent successfully.");
32 } else {
33 System.out.println("The email failed to send: "
34 + results[0].getErrors()[0].getMessage());
35 }
36 } catch (ConnectionException ce) {
37 ce.printStackTrace();
38 }
39}この例では、送信除外設定を適用してメールを送信する方法を示します。受信者は、その ID で指定されます。SendEmailOptOutPolicy.FILTER オプションにより、メール送信を除外していない受信者にのみメールが送信されます。
1SingleEmailMessage message = new SingleEmailMessage();
2// Set recipients to two contact IDs.
3// Replace IDs with valid record IDs in your org.
4message.setToAddresses(new String[] { "003D000000QDexS", "003D000000QDfW5" });
5message.setOptOutPolicy(SendEmailOptOutPolicy.FILTER);
6message.setSubject("Opt Out Test Message");
7message.setPlainTextBody("This is the message body.");
8SingleEmailMessage[] messages = { message };
9SendEmailResult[] results = connection.sendEmail(messages);
10if (results[0].isSuccess()) {
11 System.out.println("The email was sent successfully.");
12} else {
13 System.out.println("The email failed to send: "
14 + results[0].getErrors()[0].getMessage());
15}サンプルコード —C#
このサンプルでは、メールメッセージを作成して、宛先、CC、BCC の各受信者、件名、本文テキストを含む項目を設定します。また、setTargetObjectId メソッドを使用して、ログイ���ユーザの ID を受信者として設定します。これにより、指定されたユーザのメールアドレスにメールが送信されます。このサンプルでは、添付ファイルを作成し、添付ファイルを含むメールメッセージを送信します。最後に、状況メッセージまたはエラーメッセージがある場合はコンソールに書き込みます。
1public void doSendEmail()
2{
3 try
4 {
5 EmailFileAttachment efa = new EmailFileAttachment();
6 byte[] fileBody = new byte[1000000];
7 efa.body = fileBody;
8 efa.fileName = "attachment";
9 SingleEmailMessage message = new SingleEmailMessage();
10 message.setBccAddresses(new String[] {
11 "someone@salesforce.com"
12 });
13 message.setCcAddresses(new String[] {
14 "person1@salesforce.com", "person2@salesforce.com", "003xx00000a1b2cAAC"
15 });
16 message.bccSender = true;
17 message.emailPriority = EmailPriority.High;
18 message.replyTo = "person1@salesforce.com";
19 message.saveAsActivity = false;
20 message.subject = "This is how you use the " + "sendEmail method.";
21 // We can also just use an id for an implicit to address
22 GetUserInfoResult guir = binding.getUserInfo();
23 message.targetObjectId = guir.userId;
24 message.useSignature = true;
25 message.plainTextBody = "This is the humongous body "
26 + "of the message.";
27 EmailFileAttachment[] efas = { efa };
28 message.fileAttachments = efas;
29 message.toAddresses = new String[] { "person3@salesforce.com" };
30 SingleEmailMessage[] messages = { message };
31 SendEmailResult[] results = binding.sendEmail(messages);
32 if (results[0].success)
33 {
34 Console.WriteLine("The email was sent successfully.");
35 }
36 else
37 {
38 Console.WriteLine("The email failed to send: "
39 + results[0].errors[0].message);
40 }
41 }
42 catch (SoapException e)
43 {
44 Console.WriteLine("An unexpected error has occurred: " +
45 e.Message + "\n" + e.StackTrace);
46 }
47}この例では、送信除外設定を適用してメールを送信する方法を示します。受信者は、その ID で指定されます。SendEmailOptOutPolicy.FILTER オプションにより、メール送信を除外していない受信者にのみメールが送信されます。
1SingleEmailMessage message = new SingleEmailMessage();
2// Set recipients to two contact IDs.
3// Replace IDs with valid record IDs in your org.
4message.toAddresses = new String[] { "003D000000QDexS", "003D000000QDfW5" };
5message.optOutPolicy = SendEmailOptOutPolicy.FILTER;
6message.subject = "Opt Out Test Message";
7message.plainTextBody = "This is the message body.";
8SingleEmailMessage[] messages = { message };
9SendEmailResult[] results = binding.sendEmail(messages);
10if (results[0].success)
11{
12 Console.WriteLine("The email was sent successfully.");
13} else {
14 Console.WriteLine("The email failed to send: "
15 + results[0].errors[0].message);
16}BaseEmail
| 名前 | 型 | 説明 |
|---|---|---|
| bccSender | boolean | 送られるメールのコピーを、メール送信者が受け取るかどうかを示します。一括メール送信では、送信者は最初に送られるメールにのみコピーされます。 |
| saveAsActivity | boolean | 省略可能。デフォルト値は true で、メールが活動として保存されます。この引数は、受信者リストが targetObjectId または targetObjectIds に基づいている場合のみ適用されます。HTML メールの追跡が組織で有効になっている場合は、メールが開かれた確率を追跡することが可能です。 |
| useSignature | boolean | そのユーザが設定された署名を持っている場合、メールがメール署名を含むかどうか示します。デフォルトは、true で、false を指定しない限り、ユーザはメールに署名が含まれます。 |
| emailPriority | picklist | 省略可能。メールの優先度。
|
| replyTo | string | 省略可能。受信者が返信した場合に、メッセージを受け取るメールアドレス。Visualforce メールテンプレートを使用して replyTo 値を指定している場合は、設定できません。 |
| subject | string | 省略可能。メールの件名行。メールテンプレートを使用していて、件名行を上書きしようすると、エラーメッセージが返されます。 |
| templateId | ID | このメールを作成するためにマージされるテンプレートの ID。 |
| senderDisplayName | string | 省略可能。メールの From 行に表示される名前。SingleEmailMessage の OrgWideEmailAddressId に関連するオブジェクトが DisplayName 項目を定義している場合、設定できません。 |
SingleEmailMessage
次の行には、基本のメール引数に加えて、単一メールが使用する引数が含まれます。
| 名前 | 型 | 説明 |
|---|---|---|
| bccAddresses | string[] | 省略可能。ブラインドカーボンコピー (BCC) アドレス、またはメールの送信先となる取引先責任者、リード、ユーザのオブジェクト ID の配列。bccAddresses の最大数は 25 です。テンプレートを使用していない場合のみこの引数を使用できます。 ID で追加された受信者の optOutPolicy 項目でのみメールの送信除外オプションを指定できます。 メールアドレスは検証されて、形式が正しく、これまで不達としてマークされていないことが確認されます。 BCC コンプライアンスオプションが組織レベルで設定されている場合、ユーザは BCC アドレスを標準のメッセージに追加することができません。次のエラーコードが返されます。BCC_NOT_ALLOWED_IF_BCC_COMPLIANCE_ENABLED すべてのメールで、次のいずれかの項目の少なくとも 1 つに受信者の値を割り当てる必要があります。
|
| ccAddresses | string[] | 省略可能。カーボンコピー (CC) アドレス、またはメールの送信先となる取引先責任者、リード、ユーザのオブジェクト ID の配列。ccAddresses の最大数は 25 です。テンプレートを使用していない場合のみこの引数を使用できます。 ID で追加された受信者の optOutPolicy 項目でのみメールの送信除外オプションを指定できます。 メールアドレスは検証されて、形式が正しく、これまで不達としてマークされていないことが確認されます。 すべてのメールで、次のいずれかの項目の少なくとも 1 つに受信者の値を割り当てる必要があります。
|
| charset | string | 省略可能。メール用の文字セット。この値が null の場合、ユーザのデフォルト値が使われます。テンプレートには文字セットが指定されるため、templateId を指定した場合は使用できません。 |
| documentAttachments | ID[] | 非推奨。代わりに entityAttachments を使用します。省略可能。メールに添付する各 Document の ID をリストした配列。 |
| entityAttachments | ID[] | 省略可能。メールに添付する Document、ContentVersion、または Attachment 項目の ID の配列。 |
| fileAttachments | EmailFileAttachment[] | 省略可能。メールに添付するバイナリとテキストファイルのファイル名をリストした配列。添付ファイルの合計が 10 MB を超えない限り、いくつでもファイルを追加できます。 |
| htmlBody | string | 省略可能。メールの HTML 版 (送信者による指定)。組織に関連付けられた仕様に従って、値は符号化されます。 |
| inReplyTo | string | 省略可能。送信メールの In-Reply-To 項目。このメールが返信しているメール (親メール) を識別します。親メールのメッセージ ID が含まれています。「RFC2822 - Internet Message Format」 を参照してください。 |
| optOutPolicy | SendEmailOptOutPolicy (string 型の列挙) |
省略可能。受信者をメールアドレスではなく ID で追加し、[メール送信除外] オプションが設定されている場合、この項目によって sendEmail() コールの動作が決まります。メールアドレスで追加された受信者は、送信除外設定がオフになり、常にメールを受信します。SendEmailOptOutPolicy 列挙値の有効な値は次のとおりです。
|
| orgWideEmailAddressId | ID | 省略可能。送信メールに関連付けられている OrgWideEmailAddress のオブジェクト ID。OrgWideEmailAddress、DisplayName は、senderDisplayName 項目がすでに設定されている場合は設定できません。 |
| plainTextBody | string | 省略可能。メールのテキスト版 (送信者による指定)。 |
| references | string | 省略可能。送信メールの References 項目。メールスレッドを示します。親メールのメッセージ ID 項目および References 項目、および場合によっては In-Reply-To 項目が含まれています。「RFC2822 - Internet Message Format」 を参照してください。 |
| targetObjectId | ID | 省略可能。取引先責任者、リード、またはメールの送信先ユーザのオブジェクト ID。入力するオブジェクト ID によりコンテキストが設定され、テンプレート内の差し込み項目が適切なデータを含んでいることが保証されます。 すべてのメールで、次のいずれかの項目の少なくとも 1 つに受信者の値を割り当てる必要があります。
|
| toAddresses | string[] | 省略可能。メールアドレス、またはメールの送信先となる取引先責任者、リード、ユーザのオブジェクト ID の配列。toAddresses の最大数は 100 です。テンプレートを使用していない場合のみこの引数を使用できます。 ID で追加された受信者の optOutPolicy 項目でのみメールの送信除外オプションを指定できます。 |
| treatBodiesAsTemplate | boolean | 省略可能。true に設定すると、メールの件名、プレーンテキスト、および HTML テキスト本文がテンプレートデータとして扱われます。差し込み項目は、renderEmailTemplate() コールを使用して解決されます。デフォルトは false です。 |
| treatTargetObjectAsRecipient | boolean |
省略可能。true に設定すると、targetObjectId (取引先責任者、リード、またはユーザ) はメールの受信者になります。false に設定すると、targetObjectId は、テンプレート表示用の WhoId 項目として提供されますが、メールの受信者にはなりません。デフォルトは、true です。 この項目は、API バージョン 35.0 以降で使用できます。以前のバージョンでは、targetObjectId は常にメールの受信者でした。 |
| whatId | ID | 省略可能。targetObjectId 項目に取引先責任者を指定する場合、whatId も指定することができます。この項目により、テンプレート内の差し込み項目が適切なデータを含んでいることが確実に保証されるようになります。値は、次の型のいずれかです。
|
MassEmailMessage
次の表には、基本のメール引数のほか、一括メール送信で使用される引数が含まれます。
| 名前 | 型 | 説明 |
|---|---|---|
| description | string | 一括メールキューでオブジェクトを識別するために内部で使用する値。 |
| targetObjectIds | ID[] | 取引先責任者、リード、またはメールの送信先ユーザのオブジェクト ID の配列。入力するオブジェクト ID によりコンテキストが設定され、テンプレート内の差し込み項目が適切なデータを含んでいることが保証されます。オブジェクトは同じタイプ (すべての取引先責任者、すべてのリード、またはすべてのユーザ) である必要があります。1 回のメール送信で最大 250 まで ID をリストすることができます。targetObjectIds 項目の値を指定した場合、必要に応じて、メールのコンテキストを規定する whatId を、ユーザ、取引先責任者、またはリードに設定することが可能です。これにより、テンプレート内の差し込み項目が適切なデータを含んでいることが保証されます。 |
| whatIds | ID[] | 省略可能。targetObjectIds 項目に取引先責任者の配列を指定する場合、whatIds の配列も指定可能です。これにより、テンプレート内の差し込み項目が適切なデータを含んでいることが確実に保証されるようになります。値は、次の型のいずれかです。
|
EmailFileAttachment
次の表は、EmailFileAttachment が、要求の一部として渡す添付ファイルを指定するために SingleEmailMessage オブジェクトで使用する引数を示しています。なお、Document を渡す場合には documentAttachments を使用します。
障害
次の API 状況コードが返される可能性があります。また、sendEmail() では、メールテンプレートの表示時に他のエラーが返される場合もあります。「renderEmailTemplate() の障害」を参照してください。
BCC_NOT_ALLOWED_IF_BCC_COMPLIANCE_ENABLED
BCC_SELF_NOT_ALLOWED_IF_BCC_COMPLIANCE_ENABLED
EMAIL_NOT_PROCESSED_DUE_TO_PRIOR_ERROR