在 go 中使用标准库 `net/smtp` 发送邮件时,仅靠 `client.mail()` 传入带名称的邮箱会导致 501 错误;正确做法是将“显示名称 + 邮箱”格式写入邮件正文头部的 `from` 字段,而 `client.mail()` 参数必须为纯邮箱地址。
Go 标准库 net/smtp 的 Client.Mail(from string) 方法仅接受 RFC 5321 兼容的纯邮箱地址(如 [email protected]),不支持 "Name
真正控制收件端显示名称的,是邮件内容头部(MIME header)中的 From: 字段。该字段遵循 RFC 5322,允许使用带引号的显示名语法:
From: Sandy Sender <[email protected]>
✅ 正确实现步骤如下:
package main
import (
"fmt"
"net/smtp"
"strings"
)
func main() {
auth := smtp.PlainAuth("", "user@example.com", "app-password", "smtp.example.com")
to := []string{"[email protected]"}
from := "[email protected]" // ← 仅邮箱!用于 Mail()
fromHeader := "Sandy Sender <" + from + ">" // ← 带名格式!用于 From: 头部
msg := fmt.Sprintf(
"From: %s\r\n"+
"To: %s\r\n"+
"Subject: Hello from Go!\r\n"+
"MIME-Version: 1.0\r\n"+
"Content-Type: text/plain; charset=utf-8\r\n"+
"\r\n"+
"This is the body of the message.",
fromHeader, strings.Join(to, ", "),
)
err := smtp.SendMail(
"smtp.example.com:587",
auth,
from, // ← 关键:纯邮箱
to,
[]byte(msg),
)
if err != nil {
panic(err)
}
}手动拼接邮件头易出错(如编码缺失、换行符不规范)。推荐使用成熟封装库 gomail(v2),它自动处理 RFC 合规性、UTF-8 编码、MIME 分隔等细节:
package main
import (
"gopkg.in/gomail.v2"
)
func main() {
m := gomail.NewMessage()
m.SetAddressHeader("From", "[email protected]", "Sandy Sender")
m.SetAddressHeader("To", "[email protected]")
m.SetHeader("
Subject", "Hello!")
m.SetBody("text/plain", "This is the body of the message.")
d := gomail.NewPlainDialer("smtp.example.com", 587, "user@example.com", "app-password")
if err := d.DialAndSend(m); err != nil {
panic(err)
}
}⚠️ 注意事项: 显示名(如 "Sandy Sender")若含非 ASCII 字符(如中文),gomail 会自动进行 B 类型 MIME 编码(如 =?UTF-8?B?5byg5LiJ?=),而手动拼接需自行调用 mime.BEncoding.Encode(); SMTP 认证凭据建议使用应用专用密码(如 Gmail App Password),避免主密码泄露; 生产环境务必启用 TLS(gomail.NewDialer 支持 TLSConfig),禁用明文传输。
通过分离「协议层发件地址」与「展示层发件人信息」,即可优雅实现专业邮件署名效果。
# word
# go
# cad
# 编码
# app
# ai
# 路由
# cdn
# 邮箱
# 标准库
# String
# 封装
# mail
# CGI
# class
# protected
# href
# ASCII
# 邮箱地址
# 推荐使用
# 这类
# 不支持
# 不规范
# 发送邮件
# 仅靠
# 格式为
# 身份验证
# 换行符
相关文章:
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
如何通过二级域名建站提升品牌影响力?
高端建站如何打造兼具美学与转化的品牌官网?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何破解联通资金短缺导致的基站建设难题?
如何在建站主机中优化服务器配置?
建站之星导航菜单设置与功能模块配置全攻略
网站制作难吗安全吗,做一个网站需要多久时间?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何使用Golang table-driven基准测试_多组数据测量函数效率
香港服务器WordPress建站指南:SEO优化与高效部署策略
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何解决ASP生成WAP建站中文乱码问题?
Python路径拼接规范_跨平台处理说明【指导】
香港服务器租用费用高吗?如何避免常见误区?
如何在IIS7中新建站点?详细步骤解析
图册素材网站设计制作软件,图册的导出方式有几种?
Swift中循环语句中的转移语句 break 和 continue
jQuery 常见小例汇总
如何快速辨别茅台真假?关键步骤解析
为什么Go需要go mod文件_Go go mod文件作用说明
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
如何快速生成橙子建站落地页链接?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
宝塔新建站点为何无法访问?如何排查?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
php json中文编码为null的解决办法
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
广州商城建站系统开发成本与周期如何控制?
建站主机类型有哪些?如何正确选型
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
建站主机数据库如何配置才能提升网站性能?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何在IIS中新建站点并配置端口与物理路径?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
广德云建站网站建设方案与建站流程优化指南
如何在建站宝盒中设置产品搜索功能?
,柠檬视频怎样兑换vip?
如何通过免费商城建站系统源码自定义网站主题与功能?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何用PHP快速搭建CMS系统?
北京制作网站的公司,北京铁路集团官方网站?
如何在阿里云虚拟服务器快速搭建网站?
建站主机服务器选型指南与性能优化方案解析
制作宣传网站的软件,小红书可以宣传网站吗?
中山网站推广排名,中山信息港登录入口?
*请认真填写需求信息,我们会在24小时内与您取得联系。