gomail: 在 Go 中发送电子邮件
gomail 是一个功能强大且易于使用的库,用于在 Go(Golang)语言中发送电子邮件。它提供了一个便捷的接口来创建和发送邮件,支持附件、HTML 模板、多个收件人以及通过 SMTP 进行身份验证。该库受到社区的积极维护,是 Go 生态系统中处理电子邮件的标准解决方案之一。
为什么需要 gomail?
发送电子邮件是 Web 应用程序中的常见任务:用户注册、密码重置、通知、群发邮件。Go 的标准库(net/smtp)提供了基本功能,但需要大量手动工作:编码附件、生成 MIME 标头、处理 HTML 模板。gomail 承担了所有这些复杂性,让您可以专注于应用程序逻辑。
安装
使用标准的 go get 命令进行安装:
go get gopkg.in/gomail.v2要在项目中使用,请导入该包:
import "gopkg.in/gomail.v2"主要功能
- 简单发送:用最少的代码发送纯文本或 HTML 邮件。
- 支持附件:可以附加文件(图片、PDF、文档)。
- 多个收件人:支持 To、Cc、Bcc。
- HTML 和文本:支持 multipart/alternative 邮件。
- 身份验证:支持 LOGIN、PLAIN、CRAM-MD5。
- 自定义标头:可以添加自己的标头(Reply-To、Message-ID 等)。
- 邮件组:方便批量发送。
Go(Golang)代码示例
以下是通过 Gmail 的 SMTP 服务器发送带有 HTML 内容和附件的完整示例:
package main
import ( "gopkg.in/gomail.v2" "log")
func main() { m := gomail.NewMessage() m.SetHeader("From", "youremail@gmail.com") m.SetHeader("To", "recipient@example.com") m.SetHeader("Subject", "来自 Go 的问候!") m.SetBody("text/html", "<h1>您好!</h1><p>这是一封测试邮件。</p>") m.Attach("/path/to/file.pdf")
d := gomail.NewDialer("smtp.gmail.com", 587, "youremail@gmail.com", "yourpassword")
if err := d.DialAndSend(m); err != nil { log.Fatal(err) } log.Println("邮件发送成功")}何时使用 gomail?
- 当需要可靠地发送带有附件和 HTML 格式的邮件时。
- 在创建需要集成电子邮件通知的 Go 服务器应用程序时。
- 用于批量群发邮件(使用连接池)。
- 如果您厌倦了手动编码 MIME,并希望拥有干净、可读的代码。
gomail 库是任何需要发送电子邮件的 Go 项目的绝佳选择。它简单、有文档记录,并且经过测试覆盖。