Files

91 lines
1.9 KiB
Go
Raw Permalink Normal View History

2025-11-21 14:01:43 +08:00
package aws
import (
"context"
"errors"
"code.yun.ink/pkg/mailx/interfaces"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ses"
)
// 不支持变更发信人(必须配置好)
type AwsOld struct {
interfaces.DefaultEmail
// params *interfaces.EmailConfigDataAws
}
func NewAwsOld() *AwsOld {
aws := &AwsOld{}
aws.Options = interfaces.DefaultOptions()
aws.EmailType = interfaces.EmailTypeAws
return aws
}
2025-11-21 15:54:49 +08:00
func (l *AwsOld) SetOption(ctx context.Context, opt ...interfaces.Option) error {
2025-11-21 14:01:43 +08:00
for _, o := range opt {
o(&l.Options)
}
l.Options.Logger.Infof(ctx, "Aws:%+v", l.Options.Aws)
if l.Options.Aws == nil {
2025-11-21 15:54:49 +08:00
return errors.New("not aws")
2025-11-21 14:01:43 +08:00
}
if l.Options.Aws.Region == "" {
l.Options.Aws.Region = "ap-northeast-1"
}
2025-11-21 15:54:49 +08:00
return nil
2025-11-21 14:01:43 +08:00
}
func (l *AwsOld) Send(ctx context.Context, params interfaces.Message) error {
if l.Options.Aws == nil {
return errors.New("not init")
}
// 配置AWS认证信息
config := aws.Config{
Region: aws.String(l.Options.Aws.Region), // 设置你的AWS区域
Credentials: credentials.NewStaticCredentials(l.Options.Aws.AccessId, l.Options.Aws.AccessSecret, ""),
}
// 创建AWS会话
sess := session.Must(session.NewSession(&config))
// 创建SES客户端
svc := ses.New(sess)
toAddress := []*string{}
for _, val := range params.To {
toAddress = append(toAddress, aws.String(val))
}
// 使用SES服务发送邮件
_, err := svc.SendEmail(&ses.SendEmailInput{
Destination: &ses.Destination{
ToAddresses: toAddress,
},
Message: &ses.Message{
Body: &ses.Body{
Html: &ses.Content{
Data: aws.String(params.Body),
Charset: aws.String("UTF-8"),
},
},
Subject: &ses.Content{
Data: aws.String(params.Subject),
Charset: aws.String("UTF-8"),
},
},
Source: aws.String(l.Options.Aws.Sender),
})
// svc.SendRawEmail()
return err
}