aboutsummaryrefslogtreecommitdiffstats
path: root/email.go
diff options
context:
space:
mode:
Diffstat (limited to 'email.go')
-rw-r--r--email.go32
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}
+}