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

SMTP(587端口)AUTH登录凭证生成算法及GMAIL对接方法问询

SMTP(587端口)AUTH认证的登录凭证生成机制

SMTP 587端口默认通过STARTTLS升级为加密连接,在此基础上的AUTH认证主要有几种主流机制,对应的登录凭证生成方式如下:

1. PLAIN 认证(最常用)

这是最简单的明文认证机制,因传输已通过STARTTLS加密,安全性有保障:

  • 拼接规则:\0{用户名}\0{密码}(开头为ASCII空字符\0)
  • 生成步骤:将拼接后的字符串做Base64编码,结果即为发给服务器的认证内容
  • 示例:
    用户名user@gmail.com、密码mySecurePass123,拼接后为\0user@gmail.com\0mySecurePass123,Base64编码后为AHVzZXJAZ21haWwuY29tAG15U2VjdXJlUGFzczEyMw==

2. LOGIN 认证

分两步完成认证,同样基于Base64编码:

  • 第一步:单独对用户名做Base64编码并发送给服务器
  • 第二步:单独对密码做Base64编码并发送给服务器
  • 示例:
    用户名Base64:dXNlckBnbWFpbC5jb20=
    密码Base64:bXlTZWN1cmVQYXNzMTIz

3. CRAM-MD5 认证(基于哈希的安全认证)

挑战-响应式认证,无需明文传输密码:

  • 服务器先返回Base64编码的随机挑战字符串(如PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ+)
  • 客户端解码挑战字符串,以密码为密钥、挑战字符串为消息,用HMAC-MD5算法生成十六进制哈希值
  • 拼接规则:{用户名} {哈希值},再对整个字符串做Base64编码后发送给服务器
  • 示例:
    挑战解码后为<1896.697170952@postoffice.reston.mci.net>,密码myPass,计算HMAC-MD5得到0a3815f9441b23f70c59566027b8445e,拼接后为user 0a3815f9441b23f70c59566027b8445e,Base64编码后为dXNlciAwYTM4MTVmOTQ0MWIyM2Y3MGM1OTU2NjAyN2I4NDQ1ZQ==

自研邮件应用对接GMAIL的AUTH凭证创建方案

GMAIL已禁用普通密码直接用于SMTP AUTH(开启“不太安全的应用访问”不推荐),目前合规方案有两种:

1. 应用密码(App Password)—— 个人/单用户场景

  • 前提:GMAIL账号已开启两步验证(2FA)
  • 创建步骤:
    • 登录Google账号安全设置页,找到“应用密码”选项
    • 选择应用类型为“邮件”,设备类型选“其他(自定义名称)”,输入自研应用名称
    • 系统生成16位无空格应用密码,将此密码作为SMTP登录密码,用户名仍为GMAIL邮箱地址,用PLAIN或LOGIN认证即可对接

2. OAuth2.0 认证—— 多用户/商业化应用

Google推荐的第三方应用对接方式,无需用户暴露密码:

  • 前置准备:在Google Cloud Console创建项目,启用Gmail API,创建OAuth 2.0客户端ID(配置授权回调地址)
  • 凭证生成流程:
    1. 引导用户通过应用发起OAuth授权,获取授权码
    2. 用授权码换取访问令牌(Access Token)和刷新令牌(Refresh Token)
    3. SMTP认证使用XOAUTH2机制:
      • 拼接规则:user={邮箱地址}\001auth=Bearer {访问令牌}\001\001(\001为ASCII控制字符SOH)
      • 将拼接后的字符串做Base64编码,作为AUTH认证内容发送给服务器
    4. 访问令牌过期后,用刷新令牌换取新令牌,无需用户重新授权

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:45:32