在GAS中使用mailjet发送带附件的邮件

时间:2017-11-18 02:02:31

标签: email google-apps-script email-attachments

我正在尝试使用来自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))

2 个答案:

答案 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。你也可以使用它。

参考:

如果我误解了你的问题,我很抱歉。