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

使用SMTP Relay结合Google Apps Script发邮件及配额问题咨询

使用Google Apps Script通过SMTP Relay绕过MailApp配额限制

你的问题核心在于:当前使用的MailApp.sendEmail()方法,即使配置了SMTP参数,依然受限于MailApp的每日配额——因为这个方法本质还是调用Google的内置邮件服务,并没有真正通过SMTP Relay协议直接发送邮件。要避开配额限制,需要直接通过SMTP协议连接Google Workspace的SMTP Relay服务,而非依赖MailApp。

解决步骤

1. 先在Google Workspace后台配置SMTP Relay

作为Workspace管理员,需要先在Admin Console中开启并配置SMTP Relay:

  • 进入「应用 → Google Workspace → Gmail → 高级设置」
  • 找到「SMTP Relay服务」,添加允许的发送规则:
    • 可以选择允许特定用户、整个域名,或者脚本的执行IP(注意:Apps Script的IP是动态的,更推荐用户/域名认证)
    • 根据需求勾选「需要TLS加密」「需要SMTP认证」等选项

2. 在Apps Script中实现SMTP Relay发送

我们可以使用社区维护的SMTPApp库来简化SMTP协议的实现:

第一步:添加SMTPApp库

在Apps Script编辑器中:

  • 点击「扩展 → 库」
  • 输入库ID:1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
  • 选择最新版本,保存

第二步:编写发送代码

function sendEmailViaSMTPRelay() {
  // SMTP Relay配置(适配Google Workspace)
  const smtpConfig = {
    host: "smtp-relay.gmail.com",
    port: 587, // 推荐用587(TLS加密),也可选择25或465
    useSSL: false, // 587端口用TLS,此处设为false会自动触发TLS升级
    username: "your-workspace-account@your-domain.com", // 你的Workspace邮箱
    password: "your-app-password", // 开启2FA的话需用应用密码,否则用账号密码;IP认证可留空
  };

  // 邮件内容
  const emailDetails = {
    to: "recipient@example.com",
    subject: "SMTP Relay测试邮件",
    body: "这是通过SMTP Relay发送的邮件,不受MailApp的2000封每日配额限制",
    from: "your-workspace-account@your-domain.com",
    replyTo: "reply@your-domain.com"
  };

  // 执行发送
  SMTPApp.sendMail(smtpConfig, emailDetails);
}

关键注意事项

  • 配额说明:SMTP Relay的发送配额由你的Google Workspace套餐决定,通常远高于MailApp的2000封/日限制,具体可查看Workspace套餐详情
  • 应用密码:如果你的账号开启了两步验证,必须生成「应用密码」用于SMTP认证,不能用普通账号密码
  • 邮件投递性:确保你的域名已配置正确的SPF、DKIM记录,避免邮件被标记为垃圾邮件

为什么原代码无效?

MailApp.sendEmail()方法中的smtpServer等参数是Google内部用于适配特定场景的,并没有让脚本直接连接外部SMTP服务器。该方法的调用依然会走Google的MailApp服务,所以配额限制依然生效。只有直接通过SMTP协议发送,才能绕过这个限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:47:32