我正在尝试在应用程序脚本中发送的电子邮件中添加标题图像。在我的应用程序脚本中,我有以下内容:
let image = DriveApp.getFileById("10iAyjrAeTBOBTuqGmAv_SmbuUvhR8NYL").getAs("image/png");
let logo = {"logo":image};
并在模板文件中添加以下内容:
<img src="cid.logo" alt="The Logo">
但是当电子邮件发送时,它只显示徽标,并且包含作为附件引用的 png 文件。它在底部显示为 Logo.png 大小未知。
因此,如果我单击附件,它将使用我的驱动器中的正确图像打开,所以这不是问题。我错过了它没有在电子邮件中内嵌显示的其他原因吗? 谢谢, 医生
这是创建 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']] });
}
}
}