【发布时间】:2020-05-16 01:13:33
【问题描述】:
我有一个应用脚本正在从 Google 幻灯片创建 PDF。如果我使用 Google 的 MailApp 发送 PDF,我可以正确接收 PDF。
var pdf_file = DriveApp.getFileById(certificate.getId()).getAs('application/pdf');
GmailApp.sendEmail(email, subject, body,{attachments: pdf_file,name: subject});
所以现在我不想使用 GMail 而是使用 SendGrid,我只更改了上面的一行,不再调用 GMailApp.sendEmail,现在使用这个新的 sendGridEmail 函数:
sendGridEmail(toEmail,subject,body,fromEmail,pdf_file,subject +".pdf");
这是我的 SendGrid 邮件功能:
function sendGridEmail(toEmail,subject,body_details,fromEmail,myPDFfile,certificateName) {
var SENDGRID_KEY ='xxxxxxxxxxxxxxxxxxxxxxxxxxx';
var headers = {
"Authorization" : "Bearer "+ SENDGRID_KEY,
"Content-Type": "application/json"
}
var cert = Utilities.base64Encode(myPDFfile);
var body =
{
"personalizations": [
{
"to": [
{
"email": toEmail
}
],
"subject": subject
}
],
"from": {
"email": fromEmail
},
"template_id":"d-xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"attachments": [
{
content: cert,
filename: certificateName,
type: "application/pdf",
}
]
}
var options = {
'method':'post',
'headers':headers,
'payload':JSON.stringify(body)
}
var response = UrlFetchApp.fetch("https://api.sendgrid.com/v3/mail/send",options);
Logger.log(response);
}
我收到了电子邮件。除了 PDF 之外的所有作品都是空白的。我可以看到,当我将 PDF 发送到我的 sendGridEmail 函数(它在调试器中显示为 PDF)并且执行 base64Encode 时,我看到它是大量的数字,但是当我收到电子邮件时,我只看到一个空白的pdf页面。有什么想法吗?这是我第一次使用 base64 编码。我可能做得不对。
【问题讨论】:
标签: pdf google-apps-script base64 sendgrid