使用gomail发邮件(在Go中发送电子邮件的最佳方式)
1 前言
1
|
定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码(客户端专用密码)。 |
gomail包:
1
|
go get gopkg.in/gomail.v2 |
更多功能可以参考 https://github.com/go-gomail/gomail
2 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
/** * @Author: FB * @Description: * @File: main.go * @Version: 1.0.0 * @Date: 2019/9/7 14:01 */ package main import ( "gopkg.in/gomail.v2" "strconv" "log" "fmt" ) func SendMail(mailTo []string, subject string, body string) error { //定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码 //mailConn := map[string]string{ // "user": "xxx@163.com", // "pass": "your password", // "host": "smtp.163.com", // "port": "465", //} mailConn := map [string]string{ "user" : "xxx@sample.cn" , "pass" : "r4r3St*****7a7Uk" , "host" : "smtp.exmail.qq.com" , "port" : "465" , } port, _ := strconv.Atoi(mailConn[ "port" ]) //转换端口类型为int m := gomail.NewMessage() m.SetHeader( "From" , m.FormatAddress(mailConn[ "user" ], "XX官方" )) //这种方式可以添加别名,即“XX官方” //说明:如果是用网易邮箱账号发送,以下方法别名可以是中文,如果是qq企业邮箱,以下方法用中文别名,会报错,需要用上面此方法转码 //m.SetHeader("From", "FB Sample"+"<"+mailConn["user"]+">") //这种方式可以添加别名,即“FB Sample”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 读者可以自行实验下效果 //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 } func main() { //定义收件人 mailTo := []string{ "abc@sample.com" , } //邮件主题为"Hello" subject := "Hello by golang gomail from exmail.qq.com" // 邮件正文 body := "Hello,by gomail sent" err := SendMail(mailTo, subject, body) if err != nil { log.Println(err) fmt.Println( "send fail" ) return } fmt.Println( "send successfully" ) } |
3 参考
如果使用的是qq邮箱的话需要把mailConn里面的host改成‘smpt.qq.com‘,user 填写qq邮箱地址, pass需要填写你在qq邮箱设置里面获取到的授权码,qq邮箱需要先去邮箱设置里面开通smtp支持,然后获取授权码。然后就可以用qq邮箱发送了。
安装gomail
go get gopkg.in/gomail.v2
package main
import (
"gopkg.in/gomail.v2"
"strconv"
)
func SendMail(mailTo []string,subject string, body string ) error {
//定义邮箱服务器连接信息,如果是阿里邮箱 pass填密码,qq邮箱填授权码
mailConn := map[string]string {
"user": "zhangqiang@xxxx.com",
"pass": "xxxx",
"host": "smtp.mxhichina.com",
"port": "465",
}
port, _ := strconv.Atoi(mailConn["port"]) //转换端口类型为int
m := gomail.NewMessage()
m.SetHeader("From","XD Game" + "<" + mailConn["user"] + ">") //这种方式可以添加别名,即“XD Game”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 读者可以自行实验下效果
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
}
func main() {
//定义收件人
mailTo := []string {
"zhangqiang@xxx.com",
"abc@qq.com",
"sssdd@qq.com",
}
//邮件主题为"Hello"
subject := "Hello"
// 邮件正文
body := "Good"
SendMail(mailTo, subject, body)
}
更多功能可以参考 https://github.com/go-gomail/gomail
标签:类型 href 实验 pre 邮箱服务器 ret 授权 body china
原文地址:http://blog.51cto.com/superzhangqiang/2313517