package imap import ( "fmt" "net/mail" "strings" "github.com/emersion/go-imap/v2" ) func parseAddressList(s string) ([]imap.Address, error) { if s == "" { return []imap.Address{}, nil } addresses, err := mail.ParseAddressList(s) if err != nil { return nil, err } result := make([]imap.Address, 0, len(addresses)) for _, a := range addresses { atSignPosition := strings.LastIndex(a.Address, "@") if atSignPosition <= 0 { // need at least one character before the '@' sign return nil, fmt.Errorf("invalid address: %s", a.Address) } local, host := a.Address[:atSignPosition], a.Address[atSignPosition+1:] result = append(result, imap.Address{ Name: a.Name, Mailbox: local, Host: host, }) } return result, nil }