package validate import ( "net/mail" ) var ( ErrInvalidEmail = NewError("invalid email address") ) // Email validates an email address using net/mail.ParseAddress. // // Only a bare address is accepted (alice@example.com). Anything with a // display name, angle brackets, a comment, or trailing content is rejected, // as is a list of addresses. Note that ParseAddress does not require the // domain to have a dot, so "alice@localhost" is considered valid; layer on // Match or a DNS check if you need to be stricter. func Email(value string) error { addr, err := mail.ParseAddress(value) if err != nil || addr.Name != "" || addr.Address != value { return ErrInvalidEmail } return nil }