BREAKING CHANGE: The original Go module name was `github.com/ArtalkJS/Artalk`, which has now been modified to `github.com/artalkjs/artalk/v2` (all lowercase). This change may affect the CI pipeline or other areas if you are compiling the Artalk server and have specified the fixed Go module name. Regarding the original `-ldflags -X github.com/ArtalkJS/Artalk/internal/config.Version` and `CommitHash` definitions, please remove them, as they are now obsolete. The `Version` has been hardcoded into the Go code, and the `CommitHash` is now read from the Go build info via runtime/debug’s vcs.revision value. This change only affects the server developers and does not impact the frontend UI client.
51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
package email
|
|
|
|
import (
|
|
"github.com/artalkjs/artalk/v2/internal/config"
|
|
"github.com/artalkjs/artalk/v2/internal/log"
|
|
aliyun_email "github.com/qwqcode/go-aliyun-email"
|
|
"github.com/samber/lo"
|
|
)
|
|
|
|
// AliDMSender implements Sender
|
|
type AliDMSender struct {
|
|
conf config.AliDMConf
|
|
}
|
|
|
|
var _ Sender = (*AliDMSender)(nil)
|
|
|
|
// NewAliDMSender 阿里云邮件推送
|
|
func NewAliDMSender(conf config.AliDMConf) *AliDMSender {
|
|
return &AliDMSender{
|
|
conf: conf,
|
|
}
|
|
}
|
|
|
|
func (s *AliDMSender) Send(email *Email) bool {
|
|
client := aliyun_email.NewClient(
|
|
s.conf.AccessKeyId,
|
|
s.conf.AccessKeySecret,
|
|
s.conf.AccountName,
|
|
email.FromName,
|
|
lo.If(s.conf.Region == "", aliyun_email.RegionCNHangZhou).Else(s.conf.Region),
|
|
)
|
|
|
|
req := &aliyun_email.SingleRequest{
|
|
ReplyToAddress: true,
|
|
AddressType: 1,
|
|
ToAddress: email.ToAddr,
|
|
Subject: email.Subject,
|
|
HtmlBody: email.Body,
|
|
}
|
|
|
|
resp, err := client.SingleRequest(req)
|
|
if err != nil {
|
|
log.Error("[Email] ", "Email sending failed via Aliyun DM", err)
|
|
return false
|
|
}
|
|
|
|
log.Debug(resp)
|
|
|
|
return true
|
|
}
|