如何修复AppScript中sendEmail邮件模板下方图片不显示的问题?
问题修复方案
你的代码里图片无法显示的核心问题是**MailApp.sendEmail的参数格式错误**,第四个参数需要传入配置对象,而非直接传递图片Blob。以下是修正后的完整代码及关键改动说明:
关键改动点
- 将图片Blob包装为对象,键值对中键为邮件正文中的图片占位符ID,值为图片Blob
- 调用
sendEmail时传入包含htmlBody和inlineImages的配置对象,同时确保邮件正文为HTML格式,才能正确引用内嵌图片
修正后的代码
function sendEmails() { var templateData = getData("Templates"); var emailSubjectTemplate = templateData[1][0]; //Cell A2 var emailBodyTemplate = templateData[4][0]; //Cell A5 var emailData = getData("Data"); emailData = rowsToObjects(emailData); // 获取图片Blob var imageBlob = DriveApp.getFileById("1PyDU0sOYW_OSMQ1vNpXn9JGf7-I7_dBL").getAs("image/png"); emailData.forEach(function (rowObject) { var subject = renderTemplate(emailSubjectTemplate, rowObject); // 给模板正文末尾添加图片引用(占位符myImage需与inlineImages中的键一致) var body = renderTemplate(emailBodyTemplate, rowObject) + '<br><img src="cid:myImage">'; MailApp.sendEmail({ to: rowObject["Email Address"], subject: subject, htmlBody: body, inlineImages: { myImage: imageBlob } }); }); }
额外注意事项
- 确保
emailBodyTemplate为HTML格式内容,若原模板是纯文本,需替换格式(比如换行用<br>、段落用<p>等) - 邮件正文中的
cid:myImage是内嵌图片的引用标识,必须与inlineImages对象里的键完全匹配 - 确认Drive中图片文件的权限设置正确,脚本运行者拥有该文件的查看权限
内容的提问来源于stack exchange,提问作者stilllearningjustlikevivi
相关产品推荐
相关产品推荐

