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

如何绕过OAuth在应用中通过GSuite平台发送邮件?

针对GSuite(Google Workspace)绕过OAuth发送邮件的可行方案

首先明确:Google Workspace已全面禁用非OAuth的SMTP/POP3明文认证方式,无法直接绕过OAuth。但针对企业级客户,有以下合规的替代方案,无需用户手动完成OAuth授权流程:

1. 服务账号+域范围委派(推荐企业场景)

这是适配GSuite企业客户的标准方案,允许应用以域内任意用户身份发送邮件,全程无需用户交互:

  • 在Google Cloud控制台创建服务账号,启用Gmail API权限
  • 由GSuite管理员在域管理后台,为该服务账号授予域范围委派权限,指定所需的Gmail API范围(例如https://www.googleapis.com/auth/gmail.send)
  • 代码中使用服务账号密钥模拟域内用户发送邮件,示例伪代码:
    from google.oauth2 import service_account
    from googleapiclient.discovery import build
    
    SCOPES = ['https://www.googleapis.com/auth/gmail.send']
    SERVICE_ACCOUNT_KEY = 'service-account-credentials.json'
    
    credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_KEY, scopes=SCOPES, subject='target-user@your-domain.com')
    gmail_service = build('gmail', 'v1', credentials=credentials)
    
    # 构建邮件内容(省略具体逻辑)
    send_request = gmail_service.users().messages().send(
        userId='target-user@your-domain.com', body=message_payload)
    send_request.execute()
    

2. SMTP协议适配OAuth 2.0(兼容现有SMTP逻辑)

如果你的应用依赖SMTP协议而非Gmail API,可通过服务账号获取SMTP OAuth令牌完成认证:

  • 同样需要管理员配置域范围委派,获取服务账号密钥
  • 通过服务账号模拟目标用户生成SMTP OAuth令牌,然后连接smtp.gmail.com:587,用令牌替代传统密码完成认证

3. 不推荐的旧方案(仅临时兼容)

极少数未完成强制升级的旧GSuite账户,可能还允许开启“不太安全的应用访问”,但Google已逐步关闭该功能,且此方式存在极高安全风险,严禁用于生产环境。

对比Microsoft 365的差异:微软仍支持管理员在租户后台开启SMTP基本认证,但Google已彻底淘汰此类非OAuth方式,因此必须采用上述合规的OAuth企业级方案。

内容的提问来源于stack exchange,提问作者Lavesh Pillay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:12:25