1.相关配置(本文采用toml配置,可根据实际情况自行编写配置)
dev.toml
[email]
host="smtp.mxhichina.com"
port=465
username="xx@xxx.com"
password="xxxxx"
toUsers = [ "ula@xx.com" ]
配置读取
package conf
import "github.com/BurntSushi/toml"
var Conf = &config{}
func init() {
file := "conf/dev.toml"
if _, err := toml.DecodeFile(file, Conf); err != nil {
panic(err)
}
}
type config struct {
Email *Email `toml:"email"`
}
type Email struct {
Host string `toml:"host"`
Port int `toml:"port"`
UserName string `toml:"username"`
Password string `toml:"password"`
ToUsers []string `toml:"toUsers"`
}
2.编写邮件发送服务
package server
import (
"evmail/conf"
"gopkg.in/gomail.v2"
"log"
)
var (
config = conf.Conf.Email
dialer = gomail.NewDialer(config.Host, config.Port, config.UserName, config.Password)
)
func init() {
log.Println(config)
}
//发送邮件
func SendMail(body string) {
if err := dialer.DialAndSend(getMessage(body)); err != nil {
log.Println("send mail error ......")
log.Println(err.Error())
} else {
log.Println("邮件发送成功")
}
}
//定义邮件内容
func getMessage(body string) (m *gomail.Message) {
m = gomail.NewMessage()
m.SetHeader("From", conf.Conf.Email.UserName)
m.SetHeader("To", conf.Conf.Email.ToUsers...)
m.SetHeader("Subject", "xxx")
m.SetBody("text/plain", body)
return
}