Sending a VF Page as Attachment in Mail through Apex Class

S

Following code can be used for sending a vf page as an attachment with an email:

public class Gene_PDF{ 
public PageReference sendPdf(){                
     PageReference pdf = Page.mail_pdf;//mail_pdf is the name of vf page
     pdf.getParameters().put('email',email);
     // goToNextPage('email');
     Blob body;                
     try{
        body = pdf.getContent();
     }catch(VisualforceException e){
            body=Blob.valueOf('Some text');
     }            
      Messaging.EmailFileAttachment attach = new Messaging.EmailFileAttachment();
      attach.setContentType('application/pdf');
      attach.setFileName('testPdf.pdf');
      attach.setInline(false);
      attach.Body = body;
      Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
      mail.setUseSignature(false);
      mail.setToAddresses(new String[] { email });
      mail.setSubject('PDF Email Demo');
      mail.setHtmlBody('Here is the email you requested! Check the attachment!');
      mail.setFileAttachments(new Messaging.EmailFileAttachment[] { attach }); 
      // Send the email    
      Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
      ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, 'Email with PDF sent to '+email));
      return null;
    }
}

Here 1) mail_pdf is the visualforce page that we want to use as attachment and

2) email is a pre-acquired Email-ID from user to which the email will be sent.

About the author

Ankur Dalvi
By Ankur Dalvi

Category