使用Apps Script调用Gmail HTML签名发邮件时显示原始代码如何解决
Gmail获取HTML签名后发信显示源码问题解决方案
出现该问题的核心原因是调用Gmail发信接口时,HTML格式的签名内容被传入了纯文本内容字段,没有指定专用的HTML内容参数。
正确实现步骤
- 第一步:正常获取默认账号的HTML签名,你当前使用的代码无需调整:
var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature;
- 第二步:构造邮件的HTML内容,发信时传入专属的HTML内容参数
如果使用GmailApp.sendEmail接口发信,很多人只会填写前三个必填参数(收件人、主题、纯文本正文),此时所有内容都会被当成纯文本渲染,你需要额外传入htmlBody参数承载HTML格式的正文和签名,示例代码如下:
// 基础发信参数 const receiveAddr = "收件人邮箱地址"; const mailSubject = "测试邮件主题"; // plainTextBody是给不支持HTML的邮件客户端兜底的纯文本内容 const plainTextBody = "您好,这是本次邮件的正文内容"; // 构造完整HTML内容:正文可以用基础HTML标签包裹,末尾直接拼接获取到的签名HTML即可 const fullHtmlContent = `<p>${plainTextBody}</p>${signature}`; // 调用发信接口,必须传入第四个参数指定htmlBody GmailApp.sendEmail( receiveAddr, mailSubject, plainTextBody, { htmlBody: fullHtmlContent } );
注意事项
- 不要对获取到的
signature变量做额外HTML转义处理,比如不要调用转义方法把<>转换成<``>`,原生返回的内容就是可直接使用的HTML字符串 - 如果使用原生Gmail API发信,只需要在构造邮件payload时,把mimeType设置为
text/html,再把拼接好的完整HTML内容传入即可。
内容的提问来源于stack exchange,提问作者LUCA DELLA GHEZZA
相关产品推荐
相关产品推荐

