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

Google Apps Script发送邮件时收到完整HTML代码而非渲染后内容的问题求助

解决邮件收到原始HTML代码的问题

嗨,我发现你遇到的问题根源很明确:你调用GmailApp.sendEmail()时,把渲染好的HTML内容直接传给了纯文本正文参数,所以邮件客户端只会把它当成普通文本显示,不会解析渲染成可视化页面。

解决方案:指定HTML邮件参数

GmailApp.sendEmail()支持传入高级参数对象,你需要明确指定htmlBody属性来传递HTML内容,同时可以搭配纯文本版本作为兼容性 fallback(给不支持HTML的邮件客户端用)。

下面是修改后的code.gs代码:

function doPost(e) { 
  var sheet = SpreadsheetApp.getActiveSheet(); 
  var last=sheet.getLastRow(); 
  var dataRange = sheet.getRange(last, 1, 1, 4); 
  var data = dataRange.getValues(); 
  for (var i in data) { 
    var row = data[i]; 
    var emailAddress = row[2]; 
    var htmlTemplate=HtmlService.createTemplateFromFile('email'); 
    htmlTemplate.name=row[1]; 
    var htmlBody= htmlTemplate.evaluate().getContent(); 
    // 准备纯文本版本的正文(可选但推荐)
    var plainTextBody = "Hello " + row[1] + ",\n\nThis is a confirmation email from our form.";
    var subject = 'Sending emails from a Spreadsheet'; 
    // 使用高级参数指定HTML内容
    GmailApp.sendEmail(emailAddress, subject, plainTextBody, {
      htmlBody: htmlBody
    }); 
  } 
}

关键修改说明

  • 新增了plainTextBody变量:这是给不支持HTML的邮件客户端准备的纯文本内容,确保所有用户都能看到邮件内容。
  • 把原来的sendEmail调用改成带高级参数的形式:第四个参数是一个对象,其中htmlBody字段传入你的渲染好的HTML内容,这样邮件客户端就会解析并渲染HTML了。

修改后再测试,你收到的邮件就会显示成<p>from html Bob</p>渲染后的样子,而不是原始的HTML代码啦~

内容的提问来源于stack exchange,提问作者Eugene

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:47:43