参考资料
[1] 应用gomail发送邮件
[2] Golang 应用gomail包发送邮件
在理论我的项目中,可能会遇到发送邮件的需要,所以就试着实现了一下。可能目前也还没有理论遇到此需要,不过也能够先入手实现一下,兴许此需要正在路上。
1、装置 gomail 包
go get -v gopkg.in/gomail.v2
2、残缺代码
package mainimport ( "fmt" "gopkg.in/gomail.v2" "mime")/*go邮件发送*/func SendMail(mailTo []string, subject string, body string) error { // 设置邮箱主体 mailConn := map[string]string{ "user": "xxx@qq.com", //发送人邮箱(邮箱以本人的为准) "pass": "xxx", //发送人邮箱的明码,当初可能会须要邮箱 开启受权明码后在pass填写受权码 "host": "smtp.qq.com", //邮箱服务器(此时用的是qq邮箱) } m := gomail.NewMessage( //发送文本时设置编码,避免乱码。 如果txt文本设置了之后还是乱码,那能够将原txt文本在保留时 //就抉择utf-8格局保留 gomail.SetEncoding(gomail.Base64), ) m.SetHeader("From", m.FormatAddress(mailConn["user"], "LLL")) // 增加别名 m.SetHeader("To", mailTo...) // 发送给用户(能够多个) m.SetHeader("Subject", subject) // 设置邮件主题 m.SetBody("text/html", body) // 设置邮件注释 //一个文件(退出发送一个 txt 文件):/tmp/foo.txt,我须要将这个文件以邮件附件的形式进行发送,同时指定附件名为:附件.txt //同时解决了文件名乱码问题 name := "附件.txt" m.Attach("E:/GoCode/src/goMail/gomail.txt", gomail.Rename(name), //重命名 gomail.SetHeader(map[string][]string{ "Content-Disposition": []string{ fmt.Sprintf(`attachment; filename="%s"`, mime.QEncoding.Encode("UTF-8", name)), }, }), ) /* 创立SMTP客户端,连贯到近程的邮件服务器,须要指定服务器地址、端口号、用户名、明码,如果端口号为465的话, 主动开启SSL,这个时候须要指定TLSConfig */ d := gomail.NewDialer(mailConn["host"], 465, mailConn["user"], mailConn["pass"]) // 设置邮件注释 //d.TLSConfig = &tls.Config{InsecureSkipVerify: true} err := d.DialAndSend(m) return err}func main() { // 邮件接管方 mailTo := []string{ //能够是多个接管人 "xxx@163.com", "xxx@qq.com", } subject := "Hello World!" // 邮件主题 body := "测试发送邮件" // 邮件注释 err := SendMail(mailTo, subject, body) if err != nil { fmt.Println("Send fail! - ", err) return } fmt.Println("Send successfully!")}