package tool
import (
"errors"
"github.com/go-emix/utils"
"gopkg.in/gomail.v2"
)
type Email struct {
From string
Host string
Port int
UserName string
Password string
}
func (r *Email) Send(subject, htmlBody, attachFile, rename string, to ...string) error {
l := len(to)
if l == 0 {
return errors.New("to can not be empty")
}
m := gomail.NewMessage()
m.SetHeader("From", r.From)
m.SetHeader("To", to...)
m.SetHeader("Subject", subject)
m.SetBody("text/html", htmlBody)
if utils.FileIsExist(attachFile) {
if rename != "" {
setting := gomail.Rename(rename)
m.Attach(attachFile, setting)
} else {
m.Attach(attachFile)
}
}
d := gomail.NewDialer(r.Host, r.Port, r.UserName, r.Password)
return d.DialAndSend(m)
}
使用
package main
import (
"你的模块名/tool"
"fmt"
)
func main() {
var em = &tool.Email{
From: "你的qq号@qq.com",
Host: "smtp.qq.com",
Port: 465, //使用SSL,端口号465或587
UserName: "你的qq号",
Password: "授权码,不是qq邮箱密码",
}
hb := "<h3>hello,世界</h3>" //支持html
err := em.Send("golang", hb, "", "", "接收方qq号@qq.com") //可以多个接收方
fmt.Println(err)
}
授权码获取方法,开启IMAP/SMTP 服务,就可生成授权码