调整接口

This commit is contained in:
Yun
2025-08-10 21:17:10 +08:00
parent bbeea058d0
commit 12da33399b
12 changed files with 244 additions and 150 deletions
+23 -15
View File
@@ -13,7 +13,6 @@ import (
"time"
"code.yun.ink/pkg/mailx/interfaces"
"github.com/yuninks/loggerx"
)
// 邮件发送的封装
@@ -22,27 +21,36 @@ import (
type Smtp struct {
interfaces.DefaultEmail
params *interfaces.EmailConfigDataSmtp
auth smtp.Auth
logger loggerx.LoggerInterface
// params *interfaces.EmailConfigDataSmtp
auth smtp.Auth
// logger loggerx.LoggerInterface
}
func (l *Smtp) InitEmail(ctx context.Context, params interfaces.EmailConfigData, logger loggerx.LoggerInterface) (interfaces.Email, error) {
func NewSmtp() *Smtp {
smtp := &Smtp{}
smtp.Options = interfaces.DefaultOptions()
smtp.EmailType = "Smtp"
return smtp
}
if params.Smtp == nil {
func (l *Smtp) SetOption(ctx context.Context, opt ...interfaces.Option) (interfaces.EmailInterface, error) {
for _, o := range opt {
o(&l.Options)
}
l.Options.Logger.Infof(ctx, "params:%+v", l.Options.Smtp)
if l.Options.Smtp == nil {
return nil, errors.New("not smtp")
}
l.logger.Infof(ctx, "params:%+v", params.Smtp)
m := &Smtp{
params: params.Smtp,
}
m.auth = smtp.PlainAuth("", params.Smtp.Username, params.Smtp.Password, params.Smtp.Host)
return m, nil
l.auth = smtp.PlainAuth("", l.Options.Smtp.Username, l.Options.Smtp.Password, l.Options.Smtp.Host)
return l, nil
}
func (l *Smtp) Send(ctx context.Context, message interfaces.Message) error {
if l.params == nil {
if l.Options.Smtp == nil {
return errors.New("not init")
}
// .Auth()
@@ -55,7 +63,7 @@ func (l *Smtp) Send(ctx context.Context, message interfaces.Message) error {
if message.Form != "" {
Header["From"] = message.Form
} else {
Header["From"] = l.params.Username
Header["From"] = l.Options.Smtp.Username
}
if len(message.To) > 0 {
@@ -140,7 +148,7 @@ func (l *Smtp) Send(ctx context.Context, message interfaces.Message) error {
buffer.WriteString("\r\n--" + boundary + "--\r\n")
b := buffer.Bytes()
err := smtp.SendMail(l.params.Host+":"+l.params.Port, l.auth, l.params.Username, message.To, b)
err := smtp.SendMail(l.Options.Smtp.Host+":"+l.Options.Smtp.Port, l.auth, l.Options.Smtp.Username, message.To, b)
return err
}
+8 -13
View File
@@ -9,24 +9,19 @@ import (
"code.yun.ink/pkg/mailx/interfaces"
"code.yun.ink/pkg/mailx/smtp"
"github.com/yuninks/loggerx"
)
func TestMail(t *testing.T) {
sm := smtp.Smtp{}
sm := smtp.NewSmtp()
ctx := context.Background()
logger := loggerx.NewLogger(ctx)
ini, err := sm.InitEmail(ctx, interfaces.EmailConfigData{
Smtp: &interfaces.EmailConfigDataSmtp{
Username: "test@email.aisz.org",
Password: "FDuSoJKiC9tNSDIG6DFh",
ReplyTo: "",
Host: "smtpdm.aliyun.com",
Port: "80",
},
}, logger)
ini, err := sm.SetOption(ctx, interfaces.SetSmtp(&interfaces.EmailConfigDataSmtp{
Username: "test@email.aisz.org",
Password: "FDuSoJKiC9tNSDIG6DFh",
ReplyTo: "",
Host: "smtpdm.aliyun.com",
Port: "80",
}))
if err != nil {
t.Fatal(err)
}