57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package mail
|
||
|
||
import (
|
||
"apigo.cc/go/cast"
|
||
"apigo.cc/go/jsmod"
|
||
)
|
||
|
||
func init() {
|
||
jsmod.Register("mail", map[string]any{
|
||
// 默认邮箱操作 (对齐 PascalCase)
|
||
"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)
|
||
},
|
||
|
||
// 多实例获取 (对齐 PascalCase,支持可选参数)
|
||
"Mailbox": func(name *string) *jsMailbox {
|
||
target := "default"
|
||
if name != nil {
|
||
target = *name
|
||
}
|
||
m := GetMailbox(target)
|
||
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()
|
||
}
|