使用gomail发送邮件
概述
为了实现一个邮件验证码功能,特意了解了一下go如何发送邮件。本来以为会很麻烦,没想到其实很简单。
工具类
实现的工具类如下:
package mail
import "gopkg.in/gomail.v2"
// MailConfig 邮箱发送配置
type MailConfig struct {
Account string
// QQ邮箱填写授权码
Password string
// QQ:POP/SMTP 587
Port int
// QQ:smtp.qq.com
Host string
}
// SendMail 发送邮件
// from 发送者别名,mailTo 发送对象,subject主题,body 内容
func SendMail(conf *MailConfig, from string, mailTo []string, subject string, body string) error {
m := gomail.NewMessage()
//这种方式可以添加别名,即“XX官方”
m.SetHeader("From", m.FormatAddress(conf.Account, from))
//说明:如果是用网易邮箱账号发送,以下方法别名可以是中文,如果是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(conf.Host, conf.Port, conf.Account, conf.Password)
err := d.DialAndSend(m)
return err
}
主要使用到了gomail这个包。我使用的是qq邮箱,QQ邮箱需要申请POP/SMTP的授权码。端口则固定是587,域名是smtp.qq.com。
使用这个工具类:
mail.SendMail(mailConfig,
"认证", []string{mailToStr},
"登录验证码",
fmt.Sprintf("您正在尝试登录系统,这是您的验证码:%s,该验证码有效期为%d秒。",
randomStr, ttlSeconds))
版权声明
本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途
发布时间:2022年04月04日 09:15:25
备案号:
闽ICP备19015193号-1
关闭特效
评论区#
还没有评论哦,期待您的评论!
引用发言