官方简单示例:
m := gomail.NewMessage()
m.SetHeader("From", "alex@example.com")
m.SetHeader("To", "bob@example.com", "cora@example.com")
m.SetAddressHeader("Cc", "dan@example.com", "Dan")
m.SetHeader("Subject", "Hello!")
m.SetBody("text/html", "Hello <b>Bob</b> and <i>Cora</i>!")
m.Attach("/home/Alex/lolcat.jpg")
d := gomail.NewDialer("smtp.example.com", 587, "user", "123456")
// Send the email to Bob, Cora and Dan.
if err := d.DialAndSend(m); err != nil {
panic(err)
}
我的实现示例:
package email
import (
"crypto/tls"
"spider/sys"
"github.com/go-gomail/gomail"
)
/*
发送邮件,content 为发送内容
*/
func Send(content string) {
m := gomail.NewMessage()
m.SetHeader("From", sys.EMAIL_NAME) // 发件人
m.SetHeader("To", sys.To...) // 收件人
m.SetAddressHeader("Cc", sys.EMAIL_NAME, "yushanma2021") // 抄送
m.SetHeader("Subject", sys.SUBJRCT) // 邮件标题
m.SetBody("text/html", content) // 邮件内容
// 使用附件会被认为垃圾邮件
// panic: gomail: could not send email 1: 554 DT:SPM 163
//m.Attach("C:\\Users\\Jack Ma\\Desktop\\20201127180827458.png") //附件
d := gomail.NewDialer(sys.DIALER, sys.TLS_PORT, sys.EMAIL_NAME, sys.EMAIL_TOKEN) // 代理,端口,用户,授权码
d.TLSConfig = &tls.Config{InsecureSkipVerify: true} // TLS 配置
// 发送
if err := d.DialAndSend(m); err != nil {
panic(err)
}
}
sys 包:
const EMAIL_NAME = "demo@163.com"
const EMAIL_TOKEN = "demo"
const SUBJRCT = "余衫马官方"
const DIALER = "smtp.163.com"
const PORT = 25
const TLS_PORT = 465
var To = []string{"demo@qq.com"}
测试:
使用附件时,无论图片还是文件,无论是否配置 TLS,都会被认为垃圾邮件:
panic: gomail: could not send email 1: 554 DT:SPM 163
554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件;
不过附件偶尔会发送成功: