完善多个通道
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
|
||||
[error]{"time":"2024-09-30 11:31:04.522647","file":"/mailgun.go:40","func":"Send","gid":"47","content":["Could not send email: UnexpectedResponseError URL=https://api.mailgun.net/v3/sandboxd045b2448880433785c34f72a7fd0d45.mailgun.org/messages ExpectedOneOf=[]int{200, 202, 204} Got=403 Error: {\"message\":\"Domain sandboxd045b2448880433785c34f72a7fd0d45.mailgun.org is not allowed to send: Please activate your Mailgun account. Check your inbox or log in to your control panel to resend the activation email.\"}\n, resp message: , id: "]}
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
[info]{"time":"2024-09-30 11:31:03.950305","file":"/mailgun.go:23","func":"InitEmail","gid":"47","content":["params:\u0026{ApiKey:b87ece56257aa282dd3c809f683c60e5-32a0fef1-6327df27 Domain:sandboxd045b2448880433785c34f72a7fd0d45.mailgun.org Sender:zhaoyang@dreaminglife.cn}"]}
|
||||
@@ -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
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package mailgun_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"code.yun.ink/pkg/mailx/interfaces"
|
||||
"code.yun.ink/pkg/mailx/mailgun"
|
||||
"github.com/yuninks/loggerx"
|
||||
)
|
||||
|
||||
var (
|
||||
apikey = "b87ece56257aa282dd3c809f683c60e5-32a0fef1-6327df27"
|
||||
domain = "sandboxd045b2448880433785c34f72a7fd0d45.mailgun.org"
|
||||
sender = "zhaoyang@dreaminglife.cn"
|
||||
)
|
||||
|
||||
func TestSendEmail(t *testing.T) {
|
||||
gun := &mailgun.MailGun{}
|
||||
ctx := context.Background()
|
||||
|
||||
logger := loggerx.NewLogger(ctx)
|
||||
|
||||
ini, err := gun.InitEmail(ctx, interfaces.EmailConfigData{
|
||||
Mailgun: &interfaces.EmialConfigDataMailgun{
|
||||
ApiKey: apikey,
|
||||
Domain: domain,
|
||||
Sender: sender,
|
||||
},
|
||||
}, logger)
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ini.Send(ctx, interfaces.Message{
|
||||
To: []string{"995116474@qq.com"},
|
||||
Subject: "test mail",
|
||||
Body: "Hello",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log("send success")
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user