mail/mail.go

66 lines
1.2 KiB
Go
Raw Permalink Normal View History

2025-08-01 00:54:13 +08:00
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()
}