使用go-simple-mail发Gmail邮件时如何设置别名作为发件人地址
解决Gmail SMTP发送邮件时别名不生效的问题
这个问题是Gmail的SMTP服务的安全限制导致的,和你使用的go-simple-mail库无关:为了防范伪造发件人的垃圾邮件行为,Gmail默认会强制将发件人地址替换为你登录SMTP的主账号地址,除非你提前在主账号中完成了别名邮箱的所有权验证。
解决步骤
- 第一步:在Gmail主账号中完成别名配置
- 打开Gmail网页端,点击右上角设置图标,选择「查看所有设置」
- 切换到「账户和导入」标签页,找到「发送邮件为」板块
- 点击「添加其他电子邮件地址」,按照提示输入你要作为发件人的别名地址,完成邮箱所有权验证
- 验证完成后,确认该别名出现在「发送邮件为」的列表中
- 第二步:代码适配(可选,验证别名后仍不生效时使用)
你可以在原有代码基础上显式添加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
相关产品推荐
相关产品推荐

