🎨将邮箱smtp配置改为系统当中配置

This commit is contained in:
coward
2024-10-15 17:16:22 +08:00
parent fa04d9c83a
commit 331849522f
5 changed files with 34 additions and 19 deletions

View File

@@ -2,28 +2,35 @@ package utils
import (
"crypto/tls"
"encoding/json"
"errors"
"fmt"
"github.com/jordan-wright/email"
"github.com/spf13/cast"
"mime"
"net/smtp"
"net/textproto"
"path/filepath"
"wireguard-ui/config"
"wireguard-ui/model"
)
type mail struct {
*email.Email
addr string
auth smtp.Auth
conf map[string]string
}
func Mail() *mail {
func Mail(conf *model.Setting) *mail {
// 解析配置文件
var mailConf = make(map[string]string)
_ = json.Unmarshal([]byte(conf.Data), &mailConf)
var m mail
em := email.NewEmail()
m.Email = em
m.auth = smtp.PlainAuth("", config.Config.Mail.User, config.Config.Mail.Password, config.Config.Mail.Host)
m.addr = fmt.Sprintf("%s:%d", config.Config.Mail.Host, config.Config.Mail.Port)
m.auth = smtp.PlainAuth("", mailConf["user"], mailConf["password"], mailConf["host"])
m.addr = fmt.Sprintf("%s:%s", mailConf["host"], mailConf["port"])
m.conf = mailConf
return &m
}
@@ -47,7 +54,7 @@ func (m *mail) VerifyConfig() (err error) {
// @param attacheFilePath
// @return err
func (m *mail) SendMail(to, subject, content, attacheFilePath string) (err error) {
m.From = fmt.Sprintf("wg-dashboard <%s>", config.Config.Mail.User)
m.From = fmt.Sprintf("wg-dashboard <%s>", m.conf["user"])
m.To = []string{to}
m.Subject = subject
m.Text = []byte(content)
@@ -61,13 +68,13 @@ func (m *mail) SendMail(to, subject, content, attacheFilePath string) (err error
atch.Header = emHeader
}
if config.Config.Mail.SkipTls {
if cast.ToBool(m.conf["skipTls"]) {
return m.Send(m.addr, m.auth)
}
tlsConfig := &tls.Config{}
tlsConfig.InsecureSkipVerify = config.Config.Mail.SkipTls
tlsConfig.ServerName = config.Config.Mail.Host
tlsConfig.InsecureSkipVerify = cast.ToBool(m.conf["skipTls"])
tlsConfig.ServerName = m.conf["host"]
return m.SendWithTLS(m.addr, m.auth, tlsConfig)
}