diff options
Diffstat (limited to 'email.go')
| -rw-r--r-- | email.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/email.go b/email.go new file mode 100644 index 0000000..bdf4dce --- /dev/null +++ b/email.go @@ -0,0 +1,32 @@ +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} +} |