package lulu import ( "fmt" "net/mail" ) type EmailAddress mail.Address func (a EmailAddress) MarshalText() ([]byte, error) { return []byte(a.Address), nil } func (a *EmailAddress) UnmarshalText(text []byte) error { addr, err := mail.ParseAddress(string(text)) if err != nil { return err } *a = EmailAddress(*addr) return nil } func ParseEmailAddress(address string) (EmailAddress, error) { addr, err := mail.ParseAddress(address) if err != nil { return EmailAddress{}, err } return EmailAddress(*addr), nil } func MustParseEmailAddress(s string) EmailAddress { addr, err := mail.ParseAddress(s) if err != nil { panic(fmt.Sprintf("lulu: %v", err)) } return EmailAddress(*addr) }