wp-go/mail/mail.go

58 lines
1.1 KiB
Go
Raw Normal View History

2022-10-17 12:04:29 +00:00
package mail
import (
"crypto/tls"
"fmt"
2022-11-04 02:38:59 +00:00
"github/fthvgb1/wp-go/config"
2022-10-17 12:04:29 +00:00
"gopkg.in/gomail.v2"
"mime"
"strings"
)
type AttacheFile struct {
Name string
Path string
}
func (f AttacheFile) GetName() string {
t := strings.Split(f.Path, ".")
return fmt.Sprintf("%s.%s", f.Name, t[len(t)-1])
}
func SendMail(mailTo []string, subject string, body string, a ...AttacheFile) error {
m := gomail.NewMessage(
gomail.SetEncoding(gomail.Base64),
)
2022-11-15 08:36:21 +00:00
c := config.Conf.Load()
2022-10-17 12:04:29 +00:00
m.SetHeader("From",
2022-11-15 08:36:21 +00:00
m.FormatAddress(c.Mail.User,
c.Mail.Alias,
2022-10-17 12:04:29 +00:00
))
m.SetHeader("To", mailTo...)
m.SetHeader("Subject", subject)
m.SetBody("text/html", body)
for _, files := range a {
m.Attach(files.Path,
gomail.Rename(files.Name), //重命名
gomail.SetHeader(map[string][]string{
"Content-Disposition": {
fmt.Sprintf(`attachment; filename="%s"`, mime.QEncoding.Encode("UTF-8", files.GetName())),
},
}),
)
}
d := gomail.NewDialer(
2022-11-15 08:36:21 +00:00
c.Mail.Host,
c.Mail.Port,
c.Mail.User,
c.Mail.Pass,
2022-10-17 12:04:29 +00:00
)
2022-11-15 08:36:21 +00:00
if c.Mail.Ssl {
2022-10-17 12:04:29 +00:00
d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
}
err := d.DialAndSend(m)
return err
}