1

我正在使用此答案的最后一部分将驱动器中的图像作为内联图像发送。https://stackoverflow.com/a/41292754/1045794

function sendPicsInline() {
  var picture1 = DriveApp.getFileById('0BxDqyd_bUCmvN1E3N0dQOWgycFE'); //public with link
  var picture2 = DriveApp.getFileById('0BxDqyd_bUCmvTFNjRkRXbXA2Tms'); //public with link
  var inlineImages = {};
  inlineImages[picture1.getId()] = picture1.getBlob();
  inlineImages[picture2.getId()] = picture2.getBlob();
   MailApp.sendEmail({
     to: 'testa@example.com, testb@example.com', 
     subject: "This is a test", 
     body:"Test message",
     htmlBody: 'Test message with pics inline <br>' +
     'first:<br><img src="cid:' + picture1.getId() + '" /><br>' +
     'second:<br><img src="cid:' + picture2.getId() + '" />',
     inlineImages: inlineImages   
  });
}

这运行正常,但是它还在电子邮件中列出了一个附件——这在 android gmail 客户端上尤其令人沮丧。

我尝试设置一个空附件选项,但这不起作用。并不是说当我使用文档中的示例,而是将 URL 更改为任何其他图像时,我会得到一个附件以及内联图像。使用链接文档中的 YouTube 徽标,我只得到没有附件的内联图像。

我不明白为什么 - 在所有情况下,无论是来自驱动器还是其他 URL,我都使用的是 PNG 文件,没有其他更改。

4

1 回答 1

1

我有以 DataURI 的形式存储在 Google Drive 中的图像,我刚刚发送了一个这样的图像:

function sendEmailWithInlineImage() {
  var file=DriveApp.getFileById('FileId');
  GmailApp.sendEmail('recipient email', 'Inline Images', null, {htmlBody:Utilities.formatString('<h3>Inline Images</h3><img src="%s" />',file.getBlob().getDataAsString())});
}

它是作为没有附件的内嵌图像接收的。

文件的第一部分如下所示:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAMR0lEQVR42u2dbWwUxxnHTYLS0ISURrRRlCDxJkWp+qEKUtK3RHzoh5QPqSLh5mMVJVHVRiBZoY5UVcLxva8NBJOCg5EABRtjDtu8GEPqyqYFXNvY4Ffs89l39l1tn8/2nV8AGwPTnfU+x+Px7N6d70z23Bnpr73bt5ud3z7PMzO7N5OWJlJqpfb29uc9bvcfvF7vCZ/PVyWrRogvv89X3ef1Or29vZ/Scksq

于 2019-05-12T02:16:50.723 回答