You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

54 lines
1.2 KiB

package utils
import (
"crypto/tls"
"fmt"
g "godocms/common"
"strings"
"gopkg.in/gomail.v2"
)
// Email 发送方法
// to: 以英文逗号 , 分隔的字符串 如 "a@qq.com,b@qq.com"
func Email(to, subject, body string) error {
return send(strings.Split(to, ","), subject, body)
}
// 邮件发送
// to: 目标邮件
// subject: 邮件标题
// body: 邮件内容 (HTML)
func send(to []string, subject string, body string) error {
from := g.LoginConf.Email.From
nickname := g.LoginConf.Email.Username
secret := g.LoginConf.Email.Password // 使用授权码
host := g.LoginConf.Email.Host
port := g.LoginConf.Email.Port
isSsl := g.LoginConf.Email.IsSsl
// 创建邮件消息
m := gomail.NewMessage()
fromstr := fmt.Sprintf("%s <%s>", nickname, from)
m.SetHeader("From", fromstr)
//m.SetHeader("From", from)
m.SetHeader("To", to...)
m.SetHeader("Subject", subject)
m.SetBody("text/html", body)
//m.SetBody("text/plain", body)
// 创建 SMTP 客户端
d := gomail.NewDialer(host, port, from, secret)
// 设置 TLS 配置
if isSsl {
d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
}
// 发送邮件
if err := d.DialAndSend(m); err != nil {
fmt.Println("邮件发送失败:", err.Error())
return err
}
return nil
}