
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
79 lines
2.1 KiB
Plaintext
79 lines
2.1 KiB
Plaintext
== Why is this an issue?
|
||
|
||
Salesforce Governor Limits do not allow more than 10 calls to \``++Messaging.sendEmail++`` in a single transaction. There is a good chance that calling this method in a loop will reach that limit and fail. You can instead send a batch of emails with a single call to \``++Messaging.sendEmail++``.
|
||
|
||
|
||
This rule raises an issue when a call to ``++Messaging.sendEmail++`` is found in a loop.
|
||
|
||
|
||
|
||
|
||
=== Noncompliant code example
|
||
|
||
[source,apex]
|
||
----
|
||
trigger MyWelcomeTrigger on Contact (after insert) {
|
||
List<Id> toIds = new List<Id>();
|
||
for (Contact contact : trigger.new)
|
||
{
|
||
if(contact.Email != null)
|
||
{
|
||
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
|
||
String[] toAddresses = new String[] { contact.email };
|
||
mail.setToAddresses(toAddresses);
|
||
mail.setSubject('Welcome');
|
||
mail.setPlainTextBody('Welcome');
|
||
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail }); // Noncompliant
|
||
}
|
||
}
|
||
----
|
||
|
||
|
||
=== Compliant solution
|
||
|
||
[source,apex]
|
||
----
|
||
trigger MyWelcomeTrigger on Contact (after insert) {
|
||
List<Id> toIds = new List<Id>();
|
||
for (Contact contact : trigger.new)
|
||
{
|
||
if(contact.Email != null)
|
||
{
|
||
toIds.add(contact.Id);
|
||
}
|
||
}
|
||
string templateName = 'Welcome Email Template';
|
||
EmailTemplate template = [select Id, Name from EmailTemplate where name = :templateName];
|
||
Messaging.MassEmailMessage mail = new Messaging.MassEmailMessage();
|
||
mail.setTargetObjectIds(toIds);
|
||
mail.setTemplateId(template.Id);
|
||
Messaging.sendEmail(new Messaging.MassEmailMessage[] { mail });
|
||
}
|
||
----
|
||
|
||
|
||
== Resources
|
||
|
||
* https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm[Execution Governors and Limits]
|
||
|
||
ifdef::env-github,rspecator-view[]
|
||
|
||
'''
|
||
== Implementation Specification
|
||
(visible only on this page)
|
||
|
||
=== Message
|
||
|
||
Send these emails in batch
|
||
|
||
|
||
=== Highlighting
|
||
|
||
Primary Location: the call to "Messaging.SendEmail"
|
||
|
||
|
||
Secondary Location: the "do", "while" or "for" keyword of the loop.
|
||
|
||
|
||
endif::env-github,rspecator-view[]
|