mail/js_export.go

92 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package mail
import (
"apigo.cc/go/cast"
"apigo.cc/go/jsmod"
)
func init() {
jsmod.Register("mail", map[string]any{
// 默认邮箱操作 (对齐 PascalCase)
"Send": jsSend,
"Recv": jsRecv,
// 多实例获取 (对齐 PascalCase支持可选参数)
"Mailbox": jsMailboxGetter,
// 辅助工具
"FormatAddr": jsFormatAddr,
"ParseAddr": jsParseAddr,
})
}
func jsSend(to any, subject, content string, option *SendOption) error {
var toList []string
cast.Convert(&toList, to)
if err := Send(toList, subject, content, option); err != nil {
return jsmod.MakeError(err)
}
return nil
}
func jsRecv(opt *RecvOption) (*RecvResult, error) {
res, err := Recv(opt)
if err != nil {
return nil, jsmod.MakeError(err)
}
return res, nil
}
func jsMailboxGetter(name *string) *jsMailbox {
target := "default"
if name != nil {
target = *name
}
m := GetMailbox(target)
if m == nil {
return nil
}
return &jsMailbox{m: m}
}
func jsFormatAddr(name, address string) string {
return FormatAddr(name, address)
}
func jsParseAddr(addr string) (string, string, error) {
name, address, err := ParseAddr(addr)
if err != nil {
return "", "", jsmod.MakeError(err)
}
return name, address, nil
}
// 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)
if err := j.m.Send(toList, subject, content, option); err != nil {
return jsmod.MakeError(err)
}
return nil
}
func (j *jsMailbox) Recv(opt *RecvOption) (*RecvResult, error) {
res, err := j.m.Recv(opt)
if err != nil {
return nil, jsmod.MakeError(err)
}
return res, nil
}
func (j *jsMailbox) Health() error {
if err := j.m.Health(); err != nil {
return jsmod.MakeError(err)
}
return nil
}