首页 > 解决方案 > 图像作为附件发送,而不是通过应用程序脚本发送的电子邮件中的内联

问题描述

将此代码用于富文本邮件合并,效果很好。

然后我修改它以将变量 {{imageBlob}} 添加到模板中,然后我将其替换为图像标记并使用 GmailApp.sendEmail 的选项功能将其作为内联图像包含在内

这在我第一次测试时效果很好。但是所有后续测试都会导致图像作为附件发送!

/*in function to set the template*/
        template = template.replace(templateVars[i], "<img src='cid:imageKey' style='width:24px; height:16px;'/>");

/*in function to send email*/
        var imageUrl  = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Flag_of_the_Netherlands.png/320px-Flag_of_the_Netherlands.png";
      var imageBlob=UrlFetchApp
                                .fetch(imageUrl)
                                .getBlob()
                                .setName("imageBlob");


         GmailApp.sendEmail(row[RECIPIENT_COL], msgObj.subject, msgObj.text,{
              htmlBody: msgObj.html, cc:row[CC_COL], inlineImages:{imageKey: imageBlob}
            });

标签: google-apps-script

解决方案


为了实现在草稿电子邮件中插入图像,我在模板表中使用了一个名为“image”的新列,我在其中放置了这一行:

<img src='cid:imageKey' style='width:24px; height:16px;'/>

在草稿电子邮件中,我使用{{image}}了我想要替换图像的位置。

sendEmails 函数将与您拥有的相同,仅添加/替换以下行:

/*in function to send email*/
var imageUrl  = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Flag_of_the_Netherlands.png/320px-Flag_of_the_Netherlands.png";
var imageBlob=UrlFetchApp
.fetch(imageUrl)
.getBlob()
.setName("imageBlob");
GmailApp.sendEmail(row[RECIPIENT_COL], msgObj.subject, msgObj.text, {
  htmlBody: msgObj.html, inlineImages:{imageKey: imageBlob}
});

推荐阅读