调整接口

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
+27 -15
View File
@@ -6,39 +6,51 @@ import (
"code.yun.ink/pkg/mailx/interfaces"
"github.com/mailgun/mailgun-go/v4"
"github.com/yuninks/loggerx"
)
type MailGun struct {
interfaces.DefaultEmail
params *interfaces.EmialConfigDataMailgun
mg *mailgun.MailgunImpl
logger loggerx.LoggerInterface
// params *interfaces.EmialConfigDataMailgun
mg *mailgun.MailgunImpl
// logger loggerx.LoggerInterface
}
func (l *MailGun) InitEmail(ctx context.Context, params interfaces.EmailConfigData, logger loggerx.LoggerInterface) (interfaces.Email, error) {
func NewMailGun() *MailGun {
mailgun := &MailGun{}
mailgun.Options = interfaces.DefaultOptions()
mailgun.EmailType = "MailGun"
return mailgun
}
if params.Mailgun == nil {
func (l *MailGun) SetOption(ctx context.Context, opt ...interfaces.Option) (interfaces.EmailInterface, error) {
for _, o := range opt {
o(&l.Options)
}
if l.Options.Mailgun == nil {
return nil, errors.New("not mailgun")
}
l.logger.Infof(ctx, "params:%+v", params.Mailgun)
mg := mailgun.NewMailgun(params.Mailgun.Domain, params.Mailgun.ApiKey)
return &MailGun{
params: params.Mailgun,
mg: mg,
}, nil
l.Options.Logger.Infof(ctx, "Mailgun:%+v", l.Options.Mailgun)
mg := mailgun.NewMailgun(l.Options.Mailgun.Domain, l.Options.Mailgun.ApiKey)
l.mg = mg
return l, nil
}
func (l *MailGun) Send(ctx context.Context, params interfaces.Message) error {
if l.params == nil {
if l.Options.Mailgun == nil {
return errors.New("not init")
}
message := l.mg.NewMessage(l.params.Sender, params.Subject, params.Body, params.To...)
message := l.mg.NewMessage(l.Options.Mailgun.Sender, params.Subject, params.Body, params.To...)
resp, id, err := l.mg.Send(ctx, message)
if err != nil {
l.logger.Errorf(ctx, "Could not send email: %v, resp message: %s, id: %s", err, resp, id)
l.Options.Logger.Errorf(ctx, "Could not send email: %v, resp message: %s, id: %s", err, resp, id)
return err
}
+6 -11
View File
@@ -6,7 +6,6 @@ import (
"code.yun.ink/pkg/mailx/interfaces"
"code.yun.ink/pkg/mailx/mailgun"
"github.com/yuninks/loggerx"
)
var (
@@ -16,18 +15,14 @@ var (
)
func TestSendEmail(t *testing.T) {
gun := &mailgun.MailGun{}
gun := mailgun.NewMailGun()
ctx := context.Background()
logger := loggerx.NewLogger(ctx)
ini, err := gun.InitEmail(ctx, interfaces.EmailConfigData{
Mailgun: &interfaces.EmialConfigDataMailgun{
ApiKey: apikey,
Domain: domain,
Sender: sender,
},
}, logger)
ini, err := gun.SetOption(ctx, interfaces.SetMailgun(&interfaces.EmialConfigDataMailgun{
ApiKey: apikey,
Domain: domain,
Sender: sender,
}))
if err != nil {
t.Fatal(err)