57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
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
|
|
}
|
|
}
|