53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
|
|
package mail
|
||
|
|
|
||
|
|
import (
|
||
|
|
"apigo.cc/go/cast"
|
||
|
|
"apigo.cc/go/jsmod"
|
||
|
|
)
|
||
|
|
|
||
|
|
func init() {
|
||
|
|
jsmod.Register("mail", map[string]any{
|
||
|
|
// 默认邮箱操作
|
||
|
|
"send": func(to any, subject, content string, option *SendOption) error {
|
||
|
|
var toList []string
|
||
|
|
cast.Convert(&toList, to)
|
||
|
|
return Send(toList, subject, content, option)
|
||
|
|
},
|
||
|
|
"recv": func(opt *RecvOption) (*RecvResult, error) {
|
||
|
|
return Recv(opt)
|
||
|
|
},
|
||
|
|
|
||
|
|
// 多实例获取
|
||
|
|
"mailbox": func(name string) *jsMailbox {
|
||
|
|
m := GetMailbox(name)
|
||
|
|
if m == nil {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
return &jsMailbox{m: m}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 辅助工具
|
||
|
|
"formatAddr": FormatAddr,
|
||
|
|
"parseAddr": ParseAddr,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// jsMailbox 包装 Mailbox 实例
|
||
|
|
type jsMailbox struct {
|
||
|
|
m *Mailbox
|
||
|
|
}
|
||
|
|
|
||
|
|
func (j *jsMailbox) Send(to any, subject, content string, option *SendOption) error {
|
||
|
|
var toList []string
|
||
|
|
cast.Convert(&toList, to)
|
||
|
|
return j.m.Send(toList, subject, content, option)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (j *jsMailbox) Recv(opt *RecvOption) (*RecvResult, error) {
|
||
|
|
return j.m.Recv(opt)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (j *jsMailbox) Health() error {
|
||
|
|
return j.m.Health()
|
||
|
|
}
|