我正在尝试使用来自Google Apps脚本的Mailjet发送带有PDF附件的邮件。我可以毫无问题地发送普通邮件,但不太确定如何包含附件。
Mailjet文档:https://dev.mailjet.com/guides/#sending-with-attached-files
我认为我的问题是Base64Content。我真的不明白如何编码附件。当我执行以下代码时,正在发送带有PDF附件的电子邮件,但是当我尝试打开PDF时,它会显示:“无法显示PDF(test.pdf格式无效)”。
var newDoc = DocumentApp.openById(newDocid)
var attachment = newDoc.getAs(MimeType.PDF);
var mailjeturl = "https://api.mailjet.com/v3.1/send";
var mailjetparams = {
"Messages":[{
"From": {"Email": 'myemail@domain.com',"Name": 'Robert'},
"To": [{"Email": 'theiremail@domain.com'}],
"Subject": 'subject',
"HTMLPart": 'this message',
"Attachments": [{"ContentType": "application/pdf",
"Filename": "test.pdf",
"Base64Content": Utilities.base64Encode(attachment)}]
}]
}
var mailjetoptions = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(mailjetparams),
'headers': {'Authorization': 'Basic ' + Utilities.base64Encode(MAILJET_KEY)}
};
var response = JSON.parse(UrlFetchApp.fetch(mailjeturl, mailjetoptions))
答案 0 :(得分:2)
尝试像这样编码:
/Users/username/Desktop
答案 1 :(得分:1)
以下修改怎么样?我认为错误的原因可能是Utilities.base64Encode(attachment)
。
attachment
检索的 newDoc.getAs(MimeType.PDF)
是Blob。无法使用Utilities.base64Encode()
将Blob直接转换为base64。所以请将Blob转换为字节数组,并转换为base64。
当这反映在您的脚本中时。修改部分如下。
var attachment = newDoc.getAs(MimeType.PDF);
var attachment = newDoc.getAs(MimeType.PDF).getBytes();
或
var attachment = newDoc.getBlob().getBytes();
当Google文档作为Blob检索时,Google会自动转换为PDF。你也可以使用它。
如果我误解了你的问题,我很抱歉。