完善多个通道

This commit is contained in:
Yun
2024-11-20 19:42:07 +08:00
parent 868a5106e6
commit dc49e97912
33 changed files with 1861 additions and 191 deletions
+46
View File
@@ -0,0 +1,46 @@
package mailgun
import (
"context"
"errors"
"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
}
func (l *MailGun) InitEmail(ctx context.Context, params interfaces.EmailConfigData, logger loggerx.LoggerInterface) (interfaces.Email, error) {
if params.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
}
func (l *MailGun) Send(ctx context.Context, params interfaces.Message) error {
if l.params == nil {
return errors.New("not init")
}
message := l.mg.NewMessage(l.params.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)
return err
}
return err
}