go-mail发送邮件
-
service
go get "gopkg.in/gomail.v2"
import ( "errors" "fmt" "gopkg.in/gomail.v2" ) //定义邮箱服务器连接信息,如果是阿里邮箱 pass填密码,qq邮箱填授权码 type MailConfig struct { Host string `json:"Host"` //邮箱服务器地址 Port int `json:"Port"` //邮箱服务器端口 User string `json:"User"` //邮箱账号 Pass string `json:"Pass"` //邮箱密码 如果是阿里邮箱 Pass填密码,qq邮箱填授权码 SSL bool `json:"SSL"` //SSL加密传输,端口==465是默认为true } //mailConfig 邮件配置MailConfig 不能为空 //mailFrom 邮件发送方 默认MailConfig账号 //mailTo 接收邮箱 不能为空 //subject 主题 //message 发送消息 func SendMail(mailConfig *MailConfig, mailFrom string, mailTo []string, subject string, message string) error { //默认邮件来自配置邮箱 if IsEmpty(mailFrom) { mailFrom = mailConfig.User } //接收消息的邮箱不能为空 if len(mailTo) <= 0 { return errors.New("mailTo:接收消息的邮箱不能为空") } m := gomail.NewMessage() m.SetHeader("From", m.FormatAddress(mailConfig.User, mailFrom)) //这种方式可以添加别名, m.SetHeader("To", mailTo...) //发送给多个用户 m.SetHeader("Subject", subject) //设置邮件主题 m.SetBody("text/html", message) //设置邮件正文 //SSL加密 if mailConfig.SSL { mailConfig.Port = 465 } //连接 dialer := gomail.NewDialer(mailConfig.Host, mailConfig.Port, mailConfig.User, mailConfig.Pass) //发送 erBySend := dialer.DialAndSend(m) if erBySend != nil { fmt.Printf("base package SendMail send error:%v", erBySend.Error()) //error return erBySend } //success return nil }
网友评论