前言:使用golang发送邮件比较简单,今天记录一下,中间有一些端口和邮箱设置需要注意一下。
一、工具代码
func SendMail(userName, authCode, host, portStr ,mailTo, sendName string, subject, body string) error {
port, _ := strconv.Atoi(portStr)
m := gomail.NewMessage()
m.SetHeader("From", m.FormatAddress(userName, sendName))
m.SetHeader("To", mailTo)
m.SetHeader("Subject", subject)
m.SetBody("text/html", body)
d := gomail.NewDialer(host, port, userName, authCode)
err := d.DialAndSend(m)
return err
}
需要导包:
import "gopkg.in/gomail.v2"
配置:
我是用的beego框架,把邮箱配置参数写到配置里了,参数根据使用邮箱有所区别,具体看第二部分。
#邮件服务器
host = ""
#服务端口
port =
#发件人昵称
senderName = ""
#发件人邮箱
user = ""
#发件人授权码
password = ""
二、发送邮件的邮箱
1、QQ邮箱
首先需要一个QQ邮箱,如没有自行申请,然后QQ邮箱需要设置客户端访问授权码,步骤如下图所示:
往下拉到账户安全,选择POP3/SMTP,点击开启。
会出现弹窗,可以选择扫码发送短信,或者点击下方“手动发送短信”。点击我已发送后,如果系统检测到用户成功发送短信,则会提示您的客户端授权码。
当你之前设置过授权码,没有记录,可再次获取,如图:
同样会得到授权码。
继续说QQ邮箱的配置,host是固定的smtp.qq.com,端口是587,发件人昵称会显示到如图<>前面C的位置,发件人就是<>尖括号里的邮箱地址***qq.com,授权码就是刚从QQ邮箱中得到的授权码:
#邮件服务器
host = "smtp.qq.com"
#服务端口
port = 587
#发件人昵称
senderName = ""
#发件人邮箱
user = ""
#发件人授权码
password = ""
2、163邮箱
网易邮箱也需要申请授权码:
#邮件服务器
host = "smtp.163.com"
#服务端口
port = 25
#发件人昵称
senderName = ""
#发件人邮箱
user = ""
#发件人授权码
password = ""
QQ 邮箱:
SMTP 服务器地址:smtp.qq.com(SSL协议端口:465/587, 非SSL协议端口:25)
163 邮箱:
SMTP 服务器地址:smtp.163.com(SSL协议端口:465/994,非SSL协议端口:25)
小结:以上就能够实现gomail发送邮件功能,gomail还支持设置抄送收件人、附件等。