:new:新增了邮件工具
This commit is contained in:
85
utils/mail.go
Normal file
85
utils/mail.go
Normal file
@@ -0,0 +1,85 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"gitee.ltd/lxh/logger/log"
|
||||
"gopkg.in/gomail.v2"
|
||||
"mime"
|
||||
"path/filepath"
|
||||
"wireguard-dashboard/config"
|
||||
)
|
||||
|
||||
type mail struct {
|
||||
md *gomail.Dialer
|
||||
}
|
||||
|
||||
func Mail() mail {
|
||||
mailDialer := gomail.NewDialer(config.Config.Mail.Host, config.Config.Mail.Port, config.Config.Mail.User, config.Config.Mail.Password)
|
||||
mailDialer.TLSConfig = &tls.Config{
|
||||
InsecureSkipVerify: config.Config.Mail.SkipTls,
|
||||
}
|
||||
return mail{mailDialer}
|
||||
}
|
||||
|
||||
// SendMail
|
||||
// @description: 发送普通邮件
|
||||
// @receiver mail
|
||||
// @param subject
|
||||
// @param toAddress
|
||||
// @param content
|
||||
// @return err
|
||||
func (m mail) SendMail(subject, toAddress, content string) (err error) {
|
||||
msg := gomail.NewMessage()
|
||||
msg.SetHeader("From", msg.FormatAddress(m.md.Username, "wireguard-dashboard"))
|
||||
msg.SetHeader("To", toAddress)
|
||||
msg.SetHeader("Subject", subject)
|
||||
msg.SetBody("text/plain", content)
|
||||
|
||||
if err = m.md.DialAndSend(msg); err != nil {
|
||||
log.Errorf("发送普通邮件失败: %v", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// SendMailWithAttach
|
||||
// @description: 发送并携带附件
|
||||
// @receiver m
|
||||
// @param subject
|
||||
// @param toAddress
|
||||
// @param content
|
||||
// @param attachPath
|
||||
// @return err
|
||||
func (m mail) SendMailWithAttach(subject, toAddress, content, attachPath string) (err error) {
|
||||
msg := gomail.NewMessage()
|
||||
msg.SetHeader("From", msg.FormatAddress(m.md.Username, "wireguard-dashboard"))
|
||||
msg.SetHeader("To", toAddress)
|
||||
msg.SetHeader("Subject", subject)
|
||||
msg.SetBody("text/plain", content)
|
||||
|
||||
rename := m.getFileName(attachPath)
|
||||
|
||||
msg.Attach(attachPath, gomail.Rename(rename), gomail.SetHeader(map[string][]string{
|
||||
"Content-Disposition": {
|
||||
fmt.Sprintf(`attachment; filename="%s"`, mime.BEncoding.Encode("UTF-8", rename)),
|
||||
},
|
||||
}))
|
||||
|
||||
if err = m.md.DialAndSend(msg); err != nil {
|
||||
log.Errorf("发送普通邮件失败: %v", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// getFileName
|
||||
// @description: 获取文件名
|
||||
// @receiver m
|
||||
// @param filePath
|
||||
// @return string
|
||||
func (m mail) getFileName(filePath string) string {
|
||||
return filepath.Base(filePath)
|
||||
}
|
||||
Reference in New Issue
Block a user