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

使用go-simple-mail发Gmail邮件时如何设置别名作为发件人地址

解决Gmail SMTP发送邮件时别名不生效的问题

这个问题是Gmail的SMTP服务的安全限制导致的,和你使用的go-simple-mail库无关:为了防范伪造发件人的垃圾邮件行为,Gmail默认会强制将发件人地址替换为你登录SMTP的主账号地址,除非你提前在主账号中完成了别名邮箱的所有权验证。

解决步骤

  • 第一步:在Gmail主账号中完成别名配置
    1. 打开Gmail网页端,点击右上角设置图标,选择「查看所有设置」
    2. 切换到「账户和导入」标签页,找到「发送邮件为」板块
    3. 点击「添加其他电子邮件地址」,按照提示输入你要作为发件人的别名地址,完成邮箱所有权验证
    4. 验证完成后,确认该别名出现在「发送邮件为」的列表中
  • 第二步:代码适配(可选,验证别名后仍不生效时使用)
    你可以在原有代码基础上显式添加Sender头,避免部分邮件客户端识别异常,修改后的参考代码如下:
server := mail.NewSMTPClient()
server.Host = "smtp.gmail.com"
server.Port = 587
server.Username = "sample@gmail.com"
// 若你的Google账号开启了两步验证,此处需填写应用专用密码,不可使用主账号登录密码
server.Password = "password"
server.Encryption = mail.EncryptionTLS

smtpClient, err := server.Connect()
if err != nil {
    log.Fatal(err)
}

email := mail.NewMSG()
email.SetFrom("From me <alias@gmail.com>")
// 新增:显式指定Sender头为验证通过的别名
email.AddHeader("Sender", "alias@gmail.com")
email.AddTo(receiverEmail)
email.SetSubject("Forgot Password")

email.SetBody(mail.TextHTML, htmlBody)

err = email.Send(smtpClient)

注意:你只能使用已经完成所有权验证的邮箱作为别名发件,不支持未验证的任意邮箱地址,这是Gmail的强制限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:54:03