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
相关产品推荐
相关产品推荐

