Tuesday, December 26, 2017

Creating Email template in Apex to send Custom object Data

Sometimes we try to send some custom object information in mail. For sending mail Sales-force has provided 4 types of email template. We can design the template as per our requirement. We can use simple text template and use merge field to send custom object information. But that template will work perfectly only If we use in the workflow. 
If we send mail from apex code then that merge field value will not be displayed, except we can display Lead ,Contact and User object information.

Instead using the Sales-force Email template, design an template in apex code (using some HTMLtags depending according to your design).
Just make a query which information you want to send and then pass these value as parameter to a method.

List<CustomObject__c> listofCustomObjects = [SELECT id, Name,.Expiration__c ,Account_Name__c
FROM CustomObject__c]
for(CustomObject__c license:listofCustomObjects ) {

Integer numberDaysDue = System.Today().daysBetween(license.Expiration__c);
String name = license.Account_Name__c;
if(numberDaysDue == 30){

sendingmail(numberDaysDue ,name );
}
}

public void sendingmail( Integer noOfdays, String accountName){

Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage() ;
String[] toAddresses = new String[] {'jewell@test.com','neha.v@test.com','sexyRadha@test.com'};
mail.setToAddresses(toAddresses) ;
mail.setSubject('LMO:'+' '+accountName+' '+'licency expiry in'+' '+noOfdays+' '+'days');

String body = '<html lang="ja"><body>'+
'<br><br>'+'This email alert is to bring to your notice that the licence of the client :'+' '+'<b>'+accountName+'</b>'+' '+'is going to expiry within'+'<b>'+' '+noOfdays+' '+'</b>'+
'<br><br>'+'From LMO Alert Service'+'</body></html>';
mail.setHtmlBody(body);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });


}

No comments:

Post a Comment