46 lines
934 B
Go
46 lines
934 B
Go
package worker
|
|
|
|
import (
|
|
"fmt"
|
|
"net/smtp"
|
|
)
|
|
|
|
type MyEmail struct {
|
|
SmtpPort int
|
|
ImapPort int
|
|
SmtpHost string
|
|
SmtpUserName string
|
|
SmtpPassword string
|
|
}
|
|
|
|
func (e *MyEmail) Send(title, content string, toEmail []string) error {
|
|
//捕获异常
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
fmt.Errorf("MyEmail send mail error: %s", err)
|
|
}
|
|
}()
|
|
|
|
// 设置邮件头部
|
|
header := make(map[string]string)
|
|
header["From"] = e.SmtpUserName
|
|
header["To"] = toEmail[0]
|
|
|
|
header["Subject"] = title
|
|
|
|
// 组装邮件消息
|
|
message := ""
|
|
for k, v := range header {
|
|
message += fmt.Sprintf("%s: %s\r\n", k, v)
|
|
}
|
|
message += "\r\n" + content
|
|
// 发送邮件
|
|
err := smtp.SendMail(e.SmtpHost, smtp.PlainAuth("", e.SmtpUserName, e.SmtpPassword, "pop.qq.com"), e.SmtpUserName, toEmail, []byte(message))
|
|
if err != nil {
|
|
//log.Fatalf("smtp error: %s", err)
|
|
fmt.Errorf("send mail error: %s", err)
|
|
}
|
|
|
|
return nil
|
|
}
|