使用net/smtp包可实现Golang邮件发送,需配置SMTP账户信息、构造符合RFC 5322的邮件内容,并调用smtp.SendMail发送;支持通过MIME格式发送HTML邮件或使用第三方库处理复杂场景。

在Golang中实现基础的邮件发送功能并不复杂,主要依赖标准库中的net/smtp包。通过该包可以连接SMTP服务器并发送简单的文本邮件。下面介绍如何使用Golang完成这一任务。
要发送邮件,首先需要一个支持SMTP协议的邮箱账户。常见的如QQ邮箱、163邮箱、Gmail等都提供SMTP服务。以QQ邮箱为例:
注意:不要将密码硬编码在代码中,建议使用环境变量或配置文件管理敏感信息。邮件内容需遵循RFC 5322标准格式,包括发件人、收件人、主题和正文。可以用字符串拼接构造邮件头和正文。
示例代码:
立即学习“go语言免费学习笔记(深入)”;
from := "sender@qq.com"
to := "recipient@example.com"
subject := "测试邮件"
body := "这是一封由Go程序发送的测试邮件。"
msg := "From: " + from + "\n" +
"To: " + to + "\n" +
"Subject: " + subject + "\n\n" +
body
调用smtp.SendMail函数即可发送邮件。该函数参数包括服务器地址、认证机制、发件人、收件人和邮件内容。
完整示例:
package main
import (
"net/smtp"
)
func main() {
from := "sender@qq.com"
password := "your_authorization_code"
to := "recipient@example.com"
smtpHost := "smtp.qq.com"
smtpPort := "587"
subject := "测试邮件"
body := "这是一封由Go程序发送的测试邮件。"
message := []byte("From: " + from + "\r\n" +
"To: " + to + "\r\n" +
"Subject: " + subject + "\r\n\r\n" +
body)
auth := smtp.PlainAuth("", from, password, smtpHost)
err := smtp.SendMail(smtpHost+":"+smtpPort, auth, from, []string{to}, message)
if err != nil {
panic(err)
}
println("邮件发送成功!")
}
若需发送HTML格式邮件或带附件的内容,需构造MIME格式的消息体。虽然标准库不直接提供高级MIME支持,但可通过手动构建实现简单功能。
例如设置HTML内容类型:
message := []byte("From: " + from + "\r\n" +
"To: " + to + "\r\n" +
"Subject: HTML邮件测试\r\n" +
"MIME-Version: 1.0\r\n" +
"Content-Type: text/html; charset=utf-8\r\n\r\n" +
"<h1>你好,这是HTML邮件</h1><p>支持富文本内容</p>")
对于更复杂的场景(如多个附件、内嵌图片),可考虑引入第三方库如gomail/v2来简化操作。
基本上就这些。Golang的标准库已足够应对基础邮件发送需求,结合安全的凭证管理,即可快速集成到项目中。实际部署时记得处理错误并配置超时机制。不复杂但容易忽略细节。
以上就是Golang如何实现基础的邮件发送功能_Golang 邮件发送功能实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号