First at all: Happy New Year to you and your family. I wish you all the best in new 2014 year.
And about my case:
I use 'MyPdfRenderingPage.getContent();' method to get Blob PDF-body, create PDF attachment and sent it by mail.
And a code (please see below) works great in Console's Execute Anonimous Window. It creates a mail with PDF file attached which I can open later.
But if I insert the same piece of code in my Email service (it receives a mail, creates a record and returns new mail with PDF attachment), it doesn't work correctly. I receive the mail, but can't open PDF attachment.
So I checked what does that Blob return content? If to execute 'MyPdfRenderingPage.getContent();' method in Email service, it returns HTML file with JS script inside leads to MyPdfRenderingPage.
In both cases the code runs by the same user, i did check it as well.
I have no idea what is wrong here...
Thanks a lot for your help.
And that code below
Messaging.reserveSingleEmailCapacity(5);
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
String[] toAddresses = new String[] {'[email protected]'};
mail.setToAddresses(toAddresses);
mail.setReplyTo('[email protected]');
mail.setSenderDisplayName('Support');
mail.setSubject('New Record Created : ' + newRecords[0].id);
mail.setBccSender(true);
mail.setUseSignature(false);
mail.setPlainTextBody('Your new record has been created.');
mail.setHtmlBody('Your new record has been created.');
PageReference pdf = Page.MyPDFpage;
pdf.getParameters().put('id', (String)newRecords[0].id);
pdf.getParameters().put('position', '1');
pdf.setRedirect(true);
Blob pageContent = pdf.getContent();
Messaging.EmailFileAttachment efa = new Messaging.EmailFileAttachment();
efa.setFileName('PrintThisPDF.pdf');
efa.setBody(pageContent);
mail.setFileAttachments(new Messaging.EmailFileAttachment[] {efa});
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });