2026-05-31 15:52:14 +08:00
|
|
|
|
package mail
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"apigo.cc/go/cast"
|
|
|
|
|
|
"apigo.cc/go/jsmod"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
|
jsmod.Register("mail", map[string]any{
|
2026-06-10 12:41:26 +08:00
|
|
|
|
// 默认邮箱操作 (对齐 PascalCase)
|
|
|
|
|
|
"Send": func(to any, subject, content string, option *SendOption) error {
|
2026-05-31 15:52:14 +08:00
|
|
|
|
var toList []string
|
|
|
|
|
|
cast.Convert(&toList, to)
|
|
|
|
|
|
return Send(toList, subject, content, option)
|
|
|
|
|
|
},
|
2026-06-10 12:41:26 +08:00
|
|
|
|
"Recv": func(opt *RecvOption) (*RecvResult, error) {
|
2026-05-31 15:52:14 +08:00
|
|
|
|
return Recv(opt)
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2026-06-10 12:41:26 +08:00
|
|
|
|
// 多实例获取 (对齐 PascalCase,支持可选参数)
|
|
|
|
|
|
"Mailbox": func(name *string) *jsMailbox {
|
|
|
|
|
|
target := "default"
|
|
|
|
|
|
if name != nil {
|
|
|
|
|
|
target = *name
|
|
|
|
|
|
}
|
|
|
|
|
|
m := GetMailbox(target)
|
2026-05-31 15:52:14 +08:00
|
|
|
|
if m == nil {
|
|
|
|
|
|
return nil
|
|
|
|
|
|
}
|
|
|
|
|
|
return &jsMailbox{m: m}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 辅助工具
|
2026-06-10 12:41:26 +08:00
|
|
|
|
"FormatAddr": FormatAddr,
|
|
|
|
|
|
"ParseAddr": ParseAddr,
|
2026-05-31 15:52:14 +08:00
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 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()
|
|
|
|
|
|
}
|