Salesforce | Attach PDF from Visualforce page as an email attachment

| By Webner

Problem: How to attach PDF from a Visualforce page in email using apex class or trigger?

Description: We had a Visualforce page name ‘templateCOI’ which was rendered as a PDF. We wanted to use this page as an attachment in the automated email on a trigger.

Solution: Here is the code for this problem:

In this example, an automated email is sent when payment status of the record is updated to ‘Paid’.

Code for trigger:

trigger CheckPaymentStatus on Object_Info__c (before update)
List TripsList = new  List();
for(Object_Info__c term :
Object_Info__c oldOpp = Trigger.oldMap.get(term.Id);
if(term.Payment_Status__c =='Paid')
if(oldOpp.Payment_Status__c != term.Payment_Status__c)

Code for sending emailing and attaching Visualforce page in email:

public class sendPDfEmail
public static void sendPDf(String Id,String Email)
Messaging.SingleEmailMessage emailTobeSent = new Messaging.SingleEmailMessage();
PageReference PDf =  Page.templateCOI;//Replace attachmentPDf with the page you have rendered as PDF
Attachment attach = new Attachment();
Blob b ;
b = PDf.getContent();
attach.Body = b;
attach.Name = 'Confirmation of product';
attach.IsPrivate = false;
attach.ParentId = Id;
insert attach;
Messaging.EmailFileAttachment efa = new Messaging.EmailFileAttachment();
efa.setFileName('Confirmation of product.PDf');
List  listEmailMembers = new List();
emailTobeSent.setSubject('Confirmation of product');
emailTobeSent.setFileAttachments(new Messaging.EmailFileAttachment[] {efa}); // Sends the email
Messaging.SendEmailResult [] r1 = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {emailTobeSent});

Leave a Reply

Your email address will not be published. Required fields are marked *