使用Google App Scripts的HTML表单邮件通知功能失效求助
排查MailApp.sendEmail无法工作的具体步骤
确认授权权限
- 手动运行一次
doPost函数(或先执行initialSetup,再模拟参数调用doPost),触发完整的授权流程。Web App部署时的权限可能未完全生效,手动触发授权能确保脚本获得发送邮件的权限。 - 检查Web App部署权限:若选择“任何人,甚至匿名”,MailApp可能因权限限制无法发送。先切换为“仅限我自己”测试,确认邮件能正常发送后再调整权限范围。
- 手动运行一次
检查邮箱与内容格式
- 确认替换的
myemail@gmail.com无拼写错误,格式完全合规。 - 简化邮件内容:将
emailSubject和emailBody改为纯文本(如"新表单提交通知"、"有新数据已提交至Sheet"),排除特殊字符或格式导致的发送失败。
- 确认替换的
添加错误日志定位问题
- 在
catch块中加入日志记录,便于查看具体错误原因:catch (e) { Logger.log('错误详情:' + e.toString()); return ContentService .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e.toString() })) .setMimeType(ContentService.MimeType.JSON) } - 查看App Script日志:点击编辑器顶部“查看”→“日志”,获取具体错误信息(如权限不足、邮箱拦截等)。
- 在
验证Web App部署版本
- 修改代码后必须重新部署Web App并选择“新版本”,否则旧代码仍在运行。确认部署的版本包含你修改邮箱后的最新代码。
独立测试邮件发送功能
- 编写单独的测试函数,排除其他代码干扰:
function testEmail() { MailApp.sendEmail('myemail@gmail.com', '测试邮件', '这是一封来自App Script的测试邮件'); } - 运行该函数,若能收到邮件,说明MailApp本身正常,问题出在
doPost逻辑或Web App权限;若仍收不到,检查Google账号设置(如是否开启两步验证、邮箱是否拦截脚本邮件)。
- 编写单独的测试函数,排除其他代码干扰:
内容的提问来源于stack exchange,提问作者Jordan h
相关产品推荐
相关产品推荐

