在 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及设计样式?
建站之星如何快速生成多端适配网站?
中山网站制作网页,中山新生登记系统登记流程?
如何做网站制作流程,*游戏网站怎么搭建?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
jQuery 常见小例汇总
广东企业建站网站优化与SEO营销核心策略指南
建站之星后台管理如何实现高效配置?
如何通过云梦建站系统实现SEO快速优化?
如何在云主机快速搭建网站站点?
北京的网站制作公司有哪些,哪个视频网站最好?
如何配置FTP站点权限与安全设置?
建站上传速度慢?如何优化加速网站加载效率?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
怀化网站制作公司,怀化新生儿上户网上办理流程?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
如何快速搭建支持数据库操作的智能建站平台?
清除minerd进程的简单方法
,网页ppt怎么弄成自己的ppt?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
制作网站的软件免费下载,免费制作app哪个平台好?
如何通过老薛主机一键快速建站?
活动邀请函制作网站有哪些,活动邀请函文案?
香港服务器如何优化才能显著提升网站加载速度?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
临沂网站制作公司有哪些,临沂第四中学官网?
香港服务器租用每月最低只需15元?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何高效搭建专业期货交易平台网站?
制作电商网页,电商供应链怎么做?
如何在阿里云完成域名注册与建站?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
哈尔滨网站建设策划,哈尔滨电工证查询网站?
网站制作价目表怎么做,珍爱网婚介费用多少?
如何通过山东自助建站平台快速注册域名?
金*站制作公司有哪些,金华教育集团官网?
完全自定义免费建站平台:主题模板在线生成一站式服务
山东云建站价格为何差异显著?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
建站主机默认首页配置指南:核心功能与访问路径优化
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何通过可视化优化提升建站效果?
北京企业网站设计制作公司,北京铁路集团官方网站?
网站专业制作公司有哪些,做一个公司网站要多少钱?
建站主机空间推荐 高性价比配置与快速部署方案解析
建站之星如何实现网站加密操作?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何确认建站备案号应放置的具体位置?
*请认真填写需求信息,我们会在24小时内与您取得联系。