我正在尝试生成pdf并附加到电子邮件并发送。 我正在使用salesforce和sendgrid。 我能够发送电子邮件,但问题是当我尝试附加pdf,电子邮件是附件,但这是坏了,文件不是空的,但pdf说是坏了(我认为是一个问题在这里转换) 是代码通过sendgrid在salesforce中发送带附件的电子邮件
Messaging.EmailFileAttachment efa = new Messaging.EmailFileAttachment();
PageReference pdf = Page.include_attachment;
pdf.getParameters().put('id', 'xxxxxxxxxxxxxxxxxx');
blob fileBody = pdf.getContentAsPDF();
efa.setBody(fileBody);
efa.setFileName('test.pdf');
efa.setContentType('application/pdf;charset=UTF-8;');
send('[email protected]','Test','Body Test', fileBody);
我使用
pdf.getContentAsPDF();
和
pdf.getContent();
tryied但结果是一样的。
发送方法
public static void send(String emailRecipient, String emailSubject, String emailBody, Blob att){
Boolean success=true;
//construct the body of the request
String requestBody='';
requestBody += 'to='+EncodingUtil.urlEncode(emailRecipient,'UTF-8');
requestBody += '&from='+EncodingUtil.urlEncode(user.Email,'UTF-8');
requestBody += '&fromname='+EncodingUtil.urlEncode(user.Name,'UTF-8');
requestBody += '&subject='+EncodingUtil.urlEncode(emailSubject,'UTF-8');
requestBody += '&text='+EncodingUtil.urlEncode(emailBody.trim(),'UTF-8');
requestBody += '&html='+EncodingUtil.urlEncode(emailBody.trim(),'UTF-8');
requestBody += '&api_user=xxxxx';
requestBody += '&api_key=xxxxx';
requestBody += '&files[attachment.pdf][email protected]'+ EncodingUtil.base64Encode(att);
//construct request
HttpRequest req = new HttpRequest();
req.setEndpoint('https://sendgrid.com/api/mail.send.json');
req.setMethod('POST');
req.setBody(requestBody);
try{
//send request
Http h = new Http();
HttpResponse res = h.send(req);
//check response
String status = res.getStatus();
if(status.toUpperCase()=='OK'){
success=true;
}
else{
success=false;
}
}
catch(Exception e){
success=false;
}
}
谢谢
您可能需要联系[斯科特莫特(https://twitter.com/scottmotte)。他正在创建一个与Salesforce的SendGrid一起工作的库。 发送方法的主体是什么样的? –
非常感谢您的评论@Daniel,我发布了发送方法。 – agusgambina
像[Daniel Ballinger](http://stackoverflow.com/users/54026/daniel-ballinger)说我现在在图书馆工作。丹尼尔一直在帮忙。我现在没有答案,但今天正在处理这个问题。 – scottmotte