package email import ( "encoding/base64" "gopkg.in/gomail.v2" "path/filepath" ) var Email = &email{} type email struct { dialer *gomail.Dialer mail string } type Attachment struct { Name string Path string } // InitEmail 初始化配置 func InitEmail(smtp string, port int, user, pass, mail string) *email { Email.dialer = gomail.NewDialer(smtp, port, user, pass) Email.mail = mail return Email } // Send @Title 发送邮件 func (e *email) Send(email, subject, body string, attachments []Attachment) error { message := gomail.NewMessage() message.SetHeader("From", e.mail) message.SetHeader("To", email) message.SetHeader("Subject", subject) message.SetBody("text/html", body) for _, attachment := range attachments { ext := filepath.Ext(attachment.Path) message.Attach(attachment.Path, gomail.Rename("=?utf-8?B?"+base64.StdEncoding.EncodeToString([]byte(attachment.Name+ext))+"?=")) } if err := e.dialer.DialAndSend(message); err != nil { return err } return nil }