我有一个简单的MailApp来发送HTML格式的文本。我遇到的一个小问题是:如何在该文本中插入内嵌图像?例如,我想为荷兰语文本添加荷兰语标志,为法语内容添加法语标志。
我假设只使用HTML代码就可以完成这项工作。但是,唉,没有这样的运气。它只是我需要的一个小图像,内容下方没有大图像。我怎么能做到这一点?
MailApp.sendEmail(mailaddress, subject, "" ,
{ htmlBody: bodyNL + bodyFR })
答案 0 :(得分:7)
sendEmail(message)
的文档显示了如何将两个徽标添加到电子邮件中作为内嵌图像。
以下是来自Google示例的改编版,它将使用区域设置标记添加文本块。它使用来自维基媒体的图像,这些图像是在知识共享下免费许可的。
这是如何运作的关键:
<img>
标记使用src='cid:[name]'
来引用附加图像。这些是 Content-ID 统一资源定位器,它引用了多部分电子邮件的部分内容。 style
标记上使用内联<img>
来告诉邮件客户端如何显示它们。例如,我们已经缩放了附加的图像。 (注意:使用所需大小的自定义图像会更少浪费。)对电子邮件进行编码以便发送时,每个附加的图片都将位于其自己的部分中,并标有cid
中提供的inlineImages
宾语。此对象是sendMail()
方法的高级参数对象的一部分。
在这里,我们有两个cid
,nlFlag
和frFlag
,每个都与一个file Blob
相关联。
inlineImages:
{
nlFlag: nlFlagBlob,
frFlag: frFlagBlob
}
文件blob可以通过多种方式获得;在这里,我们使用UrlFetchApp.fetch()
从WikiMedia获取二进制图像,然后将它们转换为blob并设置blob的名称以便附加。
/**
* Example of sending an HTML email message with inline images.
* From: http://stackoverflow.com/a/37688529/1677912
*/
function sendInlineImages() {
var mailaddress = Session.getActiveUser().getEmail();
var subject = "test inline images";
var bodyNL = "This is <B>DUTCH</B> text.";
var bodyFR = "This is <B>FRENCH</B> text.";
// Image URLs, under CC license
var nlFlagUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Flag_of_the_Netherlands.png/320px-Flag_of_the_Netherlands.png";
var frFlagUrl = "https://upload.wikimedia.org/wikipedia/en/thumb/c/c3/Flag_of_France.svg/320px-Flag_of_France.svg.png";
// Fetch images as blobs, set names for attachments
var nlFlagBlob = UrlFetchApp
.fetch(nlFlagUrl)
.getBlob()
.setName("nlFlagBlob");
var frFlagBlob = UrlFetchApp
.fetch(frFlagUrl)
.getBlob()
.setName("frFlagBlob");
// Prepend embeded image tags for email
bodyNL = "<img src='cid:nlFlag' style='width:24px; height:16px;'/>" + bodyNL;
bodyFR = "<img src='cid:frFlag' style='width:24px; height:16px;'/>" + bodyFR;
// Send message with inlineImages object, matching embedded tags.
MailApp.sendEmail(mailaddress, subject, "",
{ htmlBody: bodyNL + "<BR/><BR/>" + bodyFR,
inlineImages:
{
nlFlag: nlFlagBlob,
frFlag: frFlagBlob
}
});
}
答案 1 :(得分:0)
来自MailApp文档:
htmlBody 字符串如果设置,能够呈现HTML的设备将使用它 而不是所需的身体参数;你可以添加一个可选项 如果您有内联图像,则可以在HTML正文中使用inlineImages字段 电子邮件
inlineImages 对象包含映射的JavaScript对象 从图像密钥(字符串)到图像数据(BlobSource);这假定 使用htmlBody参数并包含对这些图像的引用 格式为
因此,您需要将图像添加到inlineImages高级参数,并在撰写HTML消息时引用图像密钥。