如何使用 Golang 的 Gomail 发送电子邮件
简介
Gomail 是一个用于发送电子邮件的简单高效的 Go 包。它经过充分测试并且文档化良好。
Gomail 只能使用 SMTP 服务器发送电子邮件。不过它的 API 很灵活,可以轻松实现通过本地 Postfix 或 API 等发送邮件。
它使用 gopkg.in 进行了版本控制,因此可以保证每个版本都不会存在向后不兼容的变更。
它要求使用 Go 1.2 或更高版本。自 Go 1.5,没有使用外部依赖。
特性
Gomail 支持:
- 附件
- 嵌入图片
- HTML 及文本模板
- 特殊字符的自动编码
- SSL 及 TLS
- 使用同一个 SMTP 连接发送多个邮件
文档
https://godoc.org/gopkg.in/gomail.v2
下载
go get gopkg.in/gomail.v2
示例
m := gomail.NewMessage()
m.SetHeader("From", "alex@example.com")
m.SetHeader("To", "bob@example.com", "cora@example.com")
m.SetAddressHeader("Cc", "dan@example.com", "Dan")
m.SetHeader("Subject", "Hello!")
m.SetBody("text/html", "Hello <b>Bob</b> and <i>Cora</i>!")
m.Attach("/home/Alex/lolcat.jpg")
d := gomail.NewDialer("smtp.example.com", 587, "user", "123456")
// Send the email to Bob, Cora and Dan.
if err := d.DialAndSend(m); err != nil {
panic(err)
}
常见问题
x509: certificate signed by unknown authority
如果收到此错误,则表示运行 Gomail 的客户端认为 SMTP 服务器使用的证书无效。一个快速的解决方法是,可以通过 SetTLSConfig
绕过服务器证书链和主机名的验证。
package main
import (
"crypto/tls"
"gopkg.in/gomail.v2"
)
func main() {
d := gomail.NewDialer("smtp.example.com", 587, "user", "123456")
d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
// Send emails using d.
}
但是请注意,这是不安全的,不应在生产中使用。g