package interfaces import ( "context" "github.com/yuninks/loggerx" ) type emailOption struct { Logger loggerx.LoggerInterface Smtp *EmailConfigDataSmtp `json:"smtp,omitempty"` // smtp Aws *EmailConfigDataAws `json:"aws,omitempty"` // 亚马逊 Aliyun *EmialConfigDataAliyun `json:"aliyun,omitempty"` // 阿里云 Mailgun *EmialConfigDataMailgun `json:"mailgun,omitempty"` // mailgun } func DefaultOptions() emailOption { ctx := context.Background() return emailOption{ Logger: loggerx.NewLogger(ctx), } } type Option func(*emailOption) // 设置日志 func SetLogger(logger loggerx.LoggerInterface) Option { return func(o *emailOption) { o.Logger = logger } } func SetSmtp(smtp *EmailConfigDataSmtp) Option { return func(o *emailOption) { o.Smtp = smtp } } func SetAws(aws *EmailConfigDataAws) Option { return func(o *emailOption) { o.Aws = aws } } func SetAliyun(aliyun *EmialConfigDataAliyun) Option { return func(o *emailOption) { o.Aliyun = aliyun } } func SetMailgun(mailgun *EmialConfigDataMailgun) Option { return func(o *emailOption) { o.Mailgun = mailgun } }