GmailApp.sendEmail发送的业务邮件被归入垃圾文件夹如何解决
触发Hotmail垃圾规则的核心原因
- 你当前的发送方式存在基础配置漏洞:
GmailApp.sendEmail的第三个参数为纯文本 fallback 内容,你填了无意义的ww,和HTML正文内容完全不匹配,这是反垃圾系统的重点扣分项,哪怕SPF、DKIM认证通过也会拉高垃圾分值 - Hotmail反垃圾规则对支付类链接的检测更严格:你使用「click here」这种模糊锚文本跳转动态拼接的PayPal支付链接,和钓鱼邮件的典型特征匹配度高,很容易触发过滤
- Apps Script调用GmailApp发信用的是谷歌公共发送池IP,这类IP的发送行为复杂,本身就容易被Hotmail标记为高风险发送源,mail-tester的10分仅检测基础配置,不覆盖不同邮箱服务商的独立信誉规则
可落地的解决步骤
- 修复发送参数的基础问题
补全纯文本版本内容,和HTML正文保持对应,不要留无意义的占位内容,示例修改如下:
// 先生成纯文本版本的邮件内容 function getTextMessage(row, name, total, orderId, items, paypalLink) { return `Dear ${name}: 感谢您的订单,订单明细如下: ${items.map(item => `${item.name}:$${item.fee}`).join('\n')} 总计:$${total} 您的订单号是 ${orderId},请前往以下链接完成PayPal支付: ${paypalLink} ` } // 调用sendEmail时传入正确的纯文本内容 GmailApp.sendEmail(email,'Thanks for your order', getTextMessage(row, name, total, orderId, items, paypalLink),{ bcc:'shenkwen@mycompany.org', name:'company name', replyTo:'shenkwen@mycompany.org', htmlBody:message(row) })
- 优化邮件内链接的展示规则
- 不要用「click here」这类模糊锚文本,改成*「前往PayPal支付订单号XXX」*这种和上下文强关联的明确锚文本
- 可以在锚文本下方额外展示完整的PayPal链接明文,既降低用户疑虑,也能提升反垃圾系统对内容和链接相关性的判定
- 补充域名的DMARC解析记录,和已有的SPF、DKIM配合,进一步证明域名发送的合法性,大幅降低被标记为垃圾的概率
- 如果有大量Hotmail收件人,可以先做小批量发送预热:先给活跃的Hotmail用户发送,引导用户将你的发件邮箱加入通讯录、标记为非垃圾,累计发件信誉后再扩大发送量
- 如果以上操作都无效,可以放弃使用Apps Script的GmailApp发信,换成专业的事务邮件服务商发送订单类通知,这类服务商的发件IP信誉更高,对各邮箱服务商的反垃圾规则适配更完善
内容的提问来源于stack exchange,提问作者shenkwen
相关产品推荐
相关产品推荐

