Sending a VF Page as Attachment in Mail through Apex Class
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.