Golang发送邮件 — gomail

前言:使用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邮箱需要设置客户端访问授权码,步骤如下图所示:
Golang发送邮件 — gomail_第1张图片
往下拉到账户安全,选择POP3/SMTP,点击开启。
Golang发送邮件 — gomail_第2张图片
会出现弹窗,可以选择扫码发送短信,或者点击下方“手动发送短信”。点击我已发送后,如果系统检测到用户成功发送短信,则会提示您的客户端授权码。

当你之前设置过授权码,没有记录,可再次获取,如图:
Golang发送邮件 — gomail_第3张图片
Golang发送邮件 — gomail_第4张图片
同样会得到授权码。

继续说QQ邮箱的配置,host是固定的smtp.qq.com,端口是587,发件人昵称会显示到如图<>前面C的位置,发件人就是<>尖括号里的邮箱地址***qq.com,授权码就是刚从QQ邮箱中得到的授权码:
Golang发送邮件 — gomail_第5张图片

#邮件服务器
host = "smtp.qq.com"
#服务端口
port = 587
#发件人昵称
senderName = ""
#发件人邮箱
user = ""
#发件人授权码
password = ""

2、163邮箱

网易邮箱也需要申请授权码:
Golang发送邮件 — gomail_第6张图片
Golang发送邮件 — gomail_第7张图片
Golang发送邮件 — gomail_第8张图片

#邮件服务器
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还支持设置抄送收件人、附件等。

你可能感兴趣的:(golang)