Sendmail inlineimages也是附件,但不应为附件

时间:2019-05-12 01:17:14

标签: google-apps-script inline-images

我正在使用此答案的最后一部分来从云端硬盘发送图像作为内嵌图像。 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客户端上尤其令人沮丧。

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

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

1 个答案:

答案 0 :(得分:1)

我有一些图像以DataURI的形式存储在Google云端硬盘中,我只是这样发送了一个图像:

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