36 lines
915 B
Go
36 lines
915 B
Go
|
package pushers
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"fmt"
|
|||
|
"gitea.timerzz.com/kedaya_haitao/pusher/kitex_gen/config"
|
|||
|
"github.com/wneessen/go-mail"
|
|||
|
)
|
|||
|
|
|||
|
type Email struct {
|
|||
|
opt *config.EmailPush
|
|||
|
}
|
|||
|
|
|||
|
func NewEmailPusher(opt *config.EmailPush) *Email {
|
|||
|
return &Email{opt: opt}
|
|||
|
}
|
|||
|
|
|||
|
func (e *Email) Push(ctx context.Context, title, content string) error {
|
|||
|
em := mail.NewMsg()
|
|||
|
if err := em.From(e.opt.From); err != nil {
|
|||
|
return fmt.Errorf("设置from失败:%v", err)
|
|||
|
}
|
|||
|
if err := em.To(e.opt.To); err != nil {
|
|||
|
return fmt.Errorf("设置to失败:%v", err)
|
|||
|
}
|
|||
|
em.Subject(title)
|
|||
|
em.SetBodyString(mail.TypeTextPlain, content)
|
|||
|
|
|||
|
c, err := mail.NewClient(e.opt.Host, mail.WithPort(int(e.opt.Port)), mail.WithSMTPAuth(mail.SMTPAuthPlain),
|
|||
|
mail.WithUsername(e.opt.Username), mail.WithPassword(e.opt.Password))
|
|||
|
if err != nil {
|
|||
|
return fmt.Errorf("创建email客户端失败:%v", err)
|
|||
|
}
|
|||
|
return c.DialAndSendWithContext(ctx, em)
|
|||
|
}
|