在 Gmail 中添加内嵌图像显示为附件

问题描述 投票:0回答:1

我正在尝试在应用程序脚本中发送的电子邮件中添加标题图像。在我的应用程序脚本中,我有以下内容:

let image = DriveApp.getFileById("10iAyjrAeTBOBTuqGmAv_SmbuUvhR8NYL").getAs("image/png");
let logo = {"logo":image};

并在模板文件中添加以下内容:

<img src="cid.logo" alt="The Logo">

但是当电子邮件发送时,它只显示徽标,并且包含作为附件引用的 png 文件。它在底部显示为 Logo.png 大小未知。

因此,如果我单击附件,它将使用我的驱动器中的正确图像打开,所以这不是问题。我错过了它没有在电子邮件中内嵌显示的其他原因吗? 谢谢, 医生

google-apps-script html-email
1个回答
0
投票

这是创建 imgobj 并将其分配给 inlineimages 高级参数的示例

html 模板:

<!DOCTYPE html>
<html>
  <head>
    <title>Email Test</title>
  </head>
  <body>
     <img src="cid:img0" style="margin:2px 5px 2px 0;" /><?= filename[0] ?><br />
     <img src="cid:img1" style="margin:2px 5px 2px 0;" /><?= filename[1] ?><br />
     <? for(var i = 0;i < values.length; i++) { ?>
        <br /><?= "Data" + Number( i + 1) + ': ' + values[i] ?>
     <? } ?>
  </body>
</html>

GS:

function sendEmails101(obj) {
  let imgObj = {};
  let fldr = DriveApp.getFolderById("folderid");
  let files = fldr.getFilesByType(MimeType.JPEG);
  let n = 0;
  let names = ['die1.jpg', 'die2.jpg'];
  let filename = [];
  while (files.hasNext()) {
    let f = files.next();
    let index = names.indexOf(f.getName());
    if (~index) {
      imgObj[`img${n++}`] = f.getBlob();
      filename.push(names[index]);
    }
  }
  let htmlTemplate = HtmlService.createTemplateFromFile(obj.row[obj.index['htmlFile']]);
  htmlTemplate.values = obj.row.slice(obj.index['Data0']);
  htmlTemplate.filename = filename;
  let html = htmlTemplate.evaluate().getContent();
  if (html) {
    if (obj.row[obj.index['operation']] == 'Create Draft') {
      GmailApp.createDraft(obj.row[obj.index['Recipients']], obj.row[obj.index['Subject']], '', { htmlBody: html, inlineImages: imgObj, replyTo: obj.row[obj.index['replyTo']] });
    } else {

      GmailApp.sendEmail(obj.row[obj.index['Recipients']], obj.row[obj.index['Subject']], '', { htmlBody: html, inlineImages: imgObj, replyTo: obj.row[obj.index['replyTo']] });
    }
  }

}

© www.soinside.com 2019 - 2024. All rights reserved.