Gomail 是发送电子邮件的简单高效的包。它已经过充分测试和记录。Gomail 只能使用 SMTP 服务器发送电子邮件。但是该 API 灵活,可以轻松实现使用本地 Postfix,API 等发送电子邮件的其他方法。
gomail 包含的特性
go get -u gopkg.in/gomail.v2
package main
import (
"crypto/tls"
"fmt"
"gopkg.in/gomail.v2"
)
type EmailConf struct {
From string
Host string
Port int
UserName string
PassWord string
}
var EmailSuper = EmailConf{
From: "杨刚的个人网站",
Host: "smtp.exmail.qq.com",
Port: 465,
UserName: "super@ygang.top",
PassWord: "123456789",
}
func SendMail(ec EmailConf, subject, body string, to, cc, bcc, attaches []string) error {
m := gomail.NewMessage()
m.SetHeader("From", m.FormatAddress(ec.UserName, ec.From)) // 发送者
m.SetHeader("To", to...) // 接受者
m.SetHeader("Cc", cc...) // 抄送
m.SetHeader("Bcc", bcc...) // 暗送
m.SetHeader("Subject", subject) // 邮件标题
m.SetBody("text/html", body) // 发送邮件内容,text/plain为纯文本
for _, att := range attaches { // 添加附件
m.Attach(att)
}
/*
实例化邮件发送器
第一个参数为服务器地址,第二个为端口号,第三个为发送者邮箱号
第四个如果是qq邮箱为授权玛而其他邮箱是密码
*/
d := gomail.NewDialer(ec.Host, ec.Port, ec.UserName, ec.PassWord)
// 关闭SSL协议认证
d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
if err := d.DialAndSend(m); err != nil {
return err
}
return nil
}
func main() {
to := []string{"123456789@qq.com"}
attaches := []string{"./go.mod"}
err := SendMail(EmailSuper, "nihao", "hello golang!", to, nil, nil, attaches)
if err != nil {
fmt.Println(err)
}
}