2020-07-25 14:20:15 +08:00
|
|
|
|
package email
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
@Author : lanyulei
|
|
|
|
|
@Desc : 发送邮件
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import (
|
2020-08-15 23:34:37 +08:00
|
|
|
|
"ferry/pkg/logger"
|
2020-07-25 14:20:15 +08:00
|
|
|
|
"strconv"
|
|
|
|
|
|
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
|
|
|
|
|
|
"gopkg.in/gomail.v2"
|
|
|
|
|
)
|
|
|
|
|
|
2021-06-05 00:40:42 +08:00
|
|
|
|
func server(mailTo []string, ccTo []string, subject, body string, args ...string) error {
|
2020-07-25 14:20:15 +08:00
|
|
|
|
//定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码
|
|
|
|
|
mailConn := map[string]string{
|
|
|
|
|
"user": viper.GetString("settings.email.user"),
|
|
|
|
|
"pass": viper.GetString("settings.email.pass"),
|
|
|
|
|
"host": viper.GetString("settings.email.host"),
|
|
|
|
|
"port": viper.GetString("settings.email.port"),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
port, _ := strconv.Atoi(mailConn["port"]) //转换端口类型为int
|
|
|
|
|
|
|
|
|
|
m := gomail.NewMessage()
|
|
|
|
|
|
|
|
|
|
m.SetHeader("From", m.FormatAddress(mailConn["user"], viper.GetString("settings.email.alias"))) //这种方式可以添加别名,即“XX官方”
|
|
|
|
|
m.SetHeader("To", mailTo...) //发送给多个用户
|
2021-06-05 00:40:42 +08:00
|
|
|
|
m.SetHeader("Cc", ccTo...) //发送给多个用户
|
2020-07-25 14:20:15 +08:00
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-05 00:40:42 +08:00
|
|
|
|
func SendMail(mailTo []string, ccTo []string, subject, body string) {
|
|
|
|
|
err := server(mailTo, ccTo, subject, body)
|
2020-07-25 14:20:15 +08:00
|
|
|
|
if err != nil {
|
2020-08-15 23:34:37 +08:00
|
|
|
|
logger.Info(err)
|
2020-07-25 14:20:15 +08:00
|
|
|
|
return
|
|
|
|
|
}
|
2020-08-15 23:34:37 +08:00
|
|
|
|
logger.Info("send successfully")
|
2020-07-25 14:20:15 +08:00
|
|
|
|
}
|