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

GmailApp.sendEmail传入html对象后主题与正文丢失问题咨询

问题根因

你遇到的主题、正文丢失问题,基本是以下几个原因导致的:

  • 代码存在语法错误:你提供的复现代码中,sendEmails_22nd函数末尾缺少闭合大括号,整个脚本会抛出语法解析错误。如果你的代码中加了错误捕获没有把异常抛出,运行时作用域错乱会导致传入sendEmail的主题、正文参数实际为undefined,最终发出的邮件缺失对应字段。
  • 参数错位:GmailApp.sendEmail的位置传参顺序是固定的(recipient, subject, body, options),如果你实际写代码时不小心把存HTML配置的options对象提前到了subject、body的位置,会导致参数解析完全错乱,主题、正文字段无法被正确读取。

    补充:该方法也支持传入单个对象作为参数,这种写法必须显式声明to/subject/body/htmlBody等字段,漏写就会丢失对应内容。

  • HTML正文逻辑理解错误:只要传入htmlBody配置,支持HTML的邮件客户端就会优先渲染该字段内容作为正文,你当前代码里htmlBody只传了签名内容,没有把firstBody/secondBody的通知正文拼接进去,打开邮件只能看到签名,会误以为正文丢失。
  • HTML语法瑕疵:你写的签名中,电话号码的a标签属性之间缺少空格,"color:rgb(17,85,204)"target="_blank"这段里引号后直接跟了target属性,可能触发部分邮件客户端的内容过滤,导致正文渲染异常。
修复方案
  1. 先补全代码语法:给sendEmails_22nd函数补上缺失的闭合大括号,先排除基础语法问题。
  2. 校验参数顺序:如果用位置传参,严格按照收件人→主题→纯文本正文→配置对象的顺序传参;如果用对象形式传参,必须写全所有必填字段。
  3. 补全HTML正文内容:把纯文本正文的换行符替换为<br>标签后,和签名拼接再传入htmlBody,保证HTML客户端能看到完整内容,参考代码:
// 把纯文本正文转成适配HTML的格式,和签名拼接
const htmlBody7th = firstBody.replace(/\n/g, '<br>') + '<br><br>' + signature;
GmailApp.sendEmail(emails[i], subject, firstBody, {htmlBody: htmlBody7th});
  1. 修复HTML语法问题:给a标签的属性之间补上缺失的空格,避免被客户端判定为异常内容过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:36:17