使用gopkg.in/gomail.v2,发送邮件
func SendMail(mailTo []string,subject string, body string ) error {
mailConn := map[string]string {
"user": "xxxxxx@xxx.com",
"pass": "xxxxx",
"host": "smtp.xx.com",
"port": "465",
}
port, _ := strconv.Atoi(mailConn["port"])
m := gomail.NewMessage()
m.SetHeader("From",mailConn["user"])
//发送给多个用户
m.SetHeader("To", mailTo...)
//设置邮件主题
m.SetHeader("Subject", subject)
//设置邮件正文
m.SetBody("text/html", body)
d := gomail.NewDialer(mailConn["host"], port, mailConn["user"], mailConn["pass"])
err := d.DialAndSend(m)
return err
}
注意:
- 配置mailConn时,如果是163或者qq的邮箱的话首先需要开通smtp支持 pass填的就是授权码;企业邮箱的话可以填密码;
- mailConn中的user是发送者邮箱账号
- mailConn中的host指SMTP服务的域名;163邮箱的smtp host是
smtp.163.com
;qq邮箱的smtp host是smtp.qq.com
;具体host可以自行百度查找;- SetHeader()可以设置发送者的别名;也可以省略别名的设置;设置别名:
m.SetHeader("From","other Name" + "<" + mailConn["user"] + ">")
- m.SetHeader()可以设置发送方为多个,以切片的方式传入;
func main() {
//定义收件人,可以群发
mailTo := []string {
"xxxxx@xxx.com",
}
//设置邮件主题
subject := "Hello"
// 邮件正文
body := "Nice to meet you!"
err := SendMail(mailTo, subject, body)
if err != nil {
println(err.Error())
}
}