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