function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Roopa S 1Roopa S 1 

Write a trigger on Contact , when a contact insert an email should be sent to contact email id with specified template. So first you need to create text template.Choose any template design

how to write code for this
Best Answer chosen by Roopa S 1
CharuDuttCharuDutt
Hii Roopa
Try Below Code
trigger fgdfgdfg on Contact (after insert) {
    set<String> emailSet = new Set<String>();
    EmailTemplate temp=[Select id,Body from EmailTemplate where name='Template Name'];
    List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
    if(Trigger.IsAfter && Trigger.IsInsert){
        for(Contact Con : Trigger.new){
        	if(Con.Email != Null){
            	 Messaging.SingleEmailMessage singleMail = new Messaging.SingleEmailMessage();
                singleMail.setHtmlBody(temp.Body);
                singleMail.setToAddresses(new List<String>{con.Email});
                singleMail.setTargetObjectId(con.Id);
                singleMail.setTemplateId(temp.Id);
                emails.add(singleMail);
        	}
    	}
    }
    if(emails.Size()>0){
    Messaging.sendEmail(emails);
    }
}
Please Mark It As Best Answer If It Helps
Thank You!

All Answers

SFDC12SFDC12
Hi Roopa,
Try below handler and trigger.

class:

public class sendEmailHandlerclass {
   //static method
    public static List<Contact> sendEmail(List<Contact> contacts) {

        //query on template object
        EmailTemplate et=[Select id,Body from EmailTemplate where name=:'Sales: New Customer Email'];

        //list of emails
        List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();

        //loop
        for(Contact con : contacts){

            //check for Account
            if(con.AccountId == null || con.Email != null){

                //initiallize messaging method
                Messaging.SingleEmailMessage singleMail = new Messaging.SingleEmailMessage();
                singleMail.setHtmlBody(et.Body);

                //set object Id
                singleMail.setTargetObjectId(con.Id);

                //set template Id
                singleMail.setTemplateId(et.Id);

                //flag to false to stop inserting activity history
                singleMail.setSaveAsActivity(false);

                //add mail
                emails.add(singleMail);

              
            }
        }

        //send mail
        Messaging.sendEmail(emails);

        return contacts;
    }
}


trigger:
trigger sendEmail on Contact (after insert) {
    if(Trigger.isAfter){
        if(Trigger.isInsert ){ 
            //helper class for single email but bulk messages
            sendEmailHandlerclass.sendEmail(trigger.new);
        }
    }
    
}

Thanks,
Anshi.
CharuDuttCharuDutt
Hii Roopa
Try Below Code
trigger fgdfgdfg on Contact (after insert) {
    set<String> emailSet = new Set<String>();
    EmailTemplate temp=[Select id,Body from EmailTemplate where name='Template Name'];
    List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
    if(Trigger.IsAfter && Trigger.IsInsert){
        for(Contact Con : Trigger.new){
        	if(Con.Email != Null){
            	 Messaging.SingleEmailMessage singleMail = new Messaging.SingleEmailMessage();
                singleMail.setHtmlBody(temp.Body);
                singleMail.setToAddresses(new List<String>{con.Email});
                singleMail.setTargetObjectId(con.Id);
                singleMail.setTemplateId(temp.Id);
                emails.add(singleMail);
        	}
    	}
    }
    if(emails.Size()>0){
    Messaging.sendEmail(emails);
    }
}
Please Mark It As Best Answer If It Helps
Thank You!
This was selected as the best answer
Sai PraveenSai Praveen (Salesforce Developers) 
Hi Roopa,

We have to create a email template called "Sample one" as per the below code.
Please find the below Code.

Trigger
trigger ContactEmailTrigger on Contact (before insert) {

    for( contact c: Trigger.new){
        sendContactNotification.sendLeadOverlapCompleteNotification(c);
    }
}

Handler:
public class sendContactNotification {
public static void sendLeadOverlapCompleteNotification(contact con){
   Messaging.SingleEmailMessage message = new  Messaging.SingleEmailMessage();
   message.setTargetObjectId(con.id); 
   message.setSenderDisplayName('Company Support'); 
   message.setReplyTo('no-reply@company.com');
   message.setUseSignature(false); 
   message.setBccSender(false); 
    message.setTreatTargetObjectAsRecipient(true);
    message.setTreatBodiesAsTemplate(true);
     //setTreatTargetObjectAsRecipient(true)
   message.setSaveAsActivity(false); 
  EmailTemplate emailTemplate = [Select Id,Subject,Description,HtmlValue,DeveloperName,Body from EmailTemplate where DeveloperName = 'sample_one'];
  message.setTemplateID(emailTemplate.Id); 
  message.setWhatId(con.id); 
  message.toAddresses = new String[] { con.email};
  Messaging.SingleEmailMessage[] messages = new List<Messaging.SingleEmailMessage> {message};
  Messaging.SendEmailResult[] results = Messaging.sendEmail(messages);
 
 if (results[0].success) 
 {
   //System.debug('The email was sent successfully.');
 } else {
   //System.debug('The email failed to send:'  +  results[0].errors[0].message);
 }
                }
                }

If this solution helps, Please mark it as best answer.

Thanks,
 
Roopa S 1Roopa S 1
will it work for "text type"-email template?
Roopa S 1Roopa S 1
anyone pls tell how to test this scenario
SFDC12SFDC12
create a contact  to specific account,and give active email in the email field,then you will receive a mail .i think this helps you
Roopa S 1Roopa S 1
@Charudutt 
while saving contact getting error saying "sendMailToContactTrigger: execution of AfterInsert caused by: System.QueryException: List has no rows for assignment to SObject Trigger.sendMailToContactTrigger: line 3, column 1"
Roopa S 1Roopa S 1
@Sai Praveen

while saving contact getting this error  "ContactEmailTrigger: execution of BeforeInsert caused by: System.QueryException: List has no rows for assignment to SObject Class.sendMailToContactTriggerHandler.sendLeadOverlapCompleteNotification: line 13, column 1 Trigger.ContactEmailTrigger: line 4, column 1"
CharuDuttCharuDutt
Hii Roopa
Make Sure You Have Template In Your Org With the Name You Are Querying
Roopa S 1Roopa S 1
Thank you so much for the solution
CharuDuttCharuDutt
Please Close Your Query Marking It As Best Answer If It Helps So It Also Helps Others in Future
Thank You!