package mail import ( "net/mail" "apigo.cc/gojs/goja" ) type Mailbox struct { smtpHost string smtpPort int imapHost string imapPort int username string password string senderName string senderMail string } type Attachment struct { Path string Name string Data string ContentType string } func (obj *Mailbox) Recv(vm *goja.Runtime, opt *RecvOption) (*RecvResult, error) { c, err := obj.OpenIMAP(vm) if err != nil { return nil, err } defer c.Close(vm) return c.Recv(vm, opt) } func (obj *Mailbox) ParseAddr(addr string) (name, address string, err error) { r, err := mail.ParseAddress(addr) if err != nil { return "", "", err } return r.Name, r.Address, nil } func (obj *Mailbox) ParseAddrList(addrs []string) ([]map[string]string, error) { result := make([]map[string]string, len(addrs)) for i, addr := range addrs { name, address, err := obj.ParseAddr(addr) if err != nil { return nil, err } result[i] = map[string]string{ "name": name, "address": address, } } return result, nil } func (obj *Mailbox) FormatAddr(name, address string) string { addr := &mail.Address{ Name: name, Address: address, } return addr.String() }