【问题标题】:Send mail with attachment using mailjet in GAS在 GAS 中使用 mailjet 发送带有附件的邮件
【发布时间】:2018-05-01 21:13:41
【问题描述】:

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

【问题讨论】:

  • Mailjet 是必须的吗?

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


【解决方案1】:

尝试这样编码:

  var pdf = newDoc.getAs('application/pdf').getBytes();
  var attach = {fileName:'test.pdf',content:pdf, mimeType:'application/pdf'};

  var mailjetparams = {
    "Messages":[{
    "From": {"Email": 'sender@domain.com',"Name": 'Robert'},
    "To": [{"Email": 'reciever@domain.com'}],
    "Subject": 'subject',
    "HTMLPart": 'this message',
    "Attachments": [attach]
   }]
 }

【讨论】:

  • 谢谢@iJay。非常感谢您的帮助。
【解决方案2】:

下面的修改怎么样?我以为错误的原因可能是Utilities.base64Encode(attachment)

修改点:

newDoc.getAs(MimeType.PDF) 检索到的attachment 是 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。你也可以用这个。

参考:

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

【讨论】:

  • @Robert 欢迎。也谢谢你。
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 2011-07-05
相关资源
最近更新 更多