You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 13:12:33