代码拉取完成,页面将自动刷新
package gotool
import (
"crypto/tls"
"net/smtp"
"strings"
)
type Mail struct {
Username string // 用户名
Password string // 密码
Addr string // smtp地址, 例如 mail.example.com:smtp
From string // 发送者
}
// SendMail 发送邮件
//
// receiveUsers: 接收者
// subject: 主题
// content: 正文
func (mail Mail) SendMail(receiveUsers []string, subject, content string) error {
// 跳过证书认证
tlsConn, err := tls.Dial("tcp", mail.Addr, &tls.Config{InsecureSkipVerify: true, ServerName: strings.Split(mail.Addr, ":")[0]})
if err != nil {
return err
}
// 连接到SMTP服务器
conn, err := smtp.NewClient(tlsConn, strings.Split(mail.Addr, ":")[0])
if err != nil {
return err
}
defer conn.Close()
// 认证
auth := smtp.PlainAuth("", mail.Username, mail.Password, strings.Split(mail.Addr, ":")[0])
if err = conn.Auth(auth); err != nil {
return err
}
// 设置发件人和收件人
if err = conn.Mail(mail.Username); err != nil {
return err
}
for _, recipient := range receiveUsers {
if err = conn.Rcpt(recipient); err != nil {
return err
}
}
// 邮件内容
wc, err := conn.Data()
if err != nil {
return err
}
message := "From: " + mail.From + "\r\n" +
"To: " + strings.Join(receiveUsers, ";") + "\r\n" +
"Subject: " + subject + "\r\n" +
"\r\n" +
content
_, err = wc.Write([]byte(message))
if err != nil {
return err
}
err = wc.Close()
if err != nil {
return err
}
return conn.Quit()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。