package gomailer import ( "crypto/tls" "fmt" "gopkg.in/gomail.v2" ) // Mailer 邮件发送接口 type Mailer interface { SendMail(to []string, subject string, body string) error } // MailerImpl 邮件发送实现 type MailerImpl struct { message *gomail.Message dialer *gomail.Dialer } // NewMailer 创建邮件发送实例 func NewMailer(host string, port int, username, password, nickname string) Mailer { m := gomail.NewMessage() m.SetHeader(`From`, m.FormatAddress(username, nickname)) // 下面的配置改成你自己的邮箱配置 d := gomail.NewDialer(host, port, username, password) // 修改TLSconfig d.TLSConfig = &tls.Config{InsecureSkipVerify: true} return &MailerImpl{ message: m, dialer: d, } } // SendMail 发送邮件 func (m *MailerImpl) SendMail(to []string, subject string, body string) error { m.message.SetHeader(`To`, to...) m.message.SetHeader(`Subject`, subject) m.message.SetBody(`text/html`, body) if err := m.dialer.DialAndSend(m.message); err != nil { return fmt.Errorf("send mail failed: %v", err) } return nil }