Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var DisposableList = map[string]struct{}{}/* 3632 elements not displayed */
DisposableList is the list of domains that are considered to be from disposable email service providers. See: https://github.com/martenson/disposable-email-domains.
NOTE: To update the list, refer to the 'update' sub-package.
var ErrInvalidEmail = errors.New("invalid email")
ErrInvalidEmail is returned if the email address is invalid.
Functions ¶
func GetDisposableList ¶
func GetDisposableList() map[string]struct{}
GetDisposableList returns the current disposable email list. Note that the actual implementation isn't safe for concurrent reading and writing of the list, it's only set and get atomically.
func ScheduleUpdates ¶
func ScheduleUpdates(interval time.Duration, timeout time.Duration, urls []string, onError func(error) (shouldStop bool))
ScheduleUpdates will update the list of disposable email domains at regular intervals. The interval is how often the list will be updated. The timeout is how long the update is allowed to take. url is optional to override the default one. If an error occurs during the update, the onError function will be called. If onError returns true, the update process will stop.
func ValidateDomain ¶
ValidateDomain returns true if the domain component of an email address is valid. domain must be already lower-case and white-space trimmed. This function only performs a basic check and is not authoritative. For domains containing unicode characters, you must perform punycode conversion beforehand. See: https://godoc.org/golang.org/x/net/idna#ToASCII
Types ¶
type ParsedEmail ¶
type ParsedEmail struct { // Email represents the input email (after white-space has been trimmed). Email string // Preferred represents the local-part in the way the user seems to prefer it. // For example if the local-part is case-insensitive, the user may prefer their // email address all upper-case even if it does not matter. Preferred string // Normalized represents the local-part normalized such that it can be // compared for uniqueness. // // For gmail, since john.smith@gmail.com, johnsmith@gmail.com, and JohnSmith@gmail.com // are all equivalent, the normalized local-part is 'johnsmith'. Normalized string // Extra represents extra information that is domain specific. // // Example: gmail ignores all characters after the first '+' in the local-part. // // adam+junk@gmail.com => adam@gmail.com (Extra: junk) Extra string // Disposable is true if the email address is detected to be from // a disposable email service. // // See: https://github.com/martenson/disposable-email-domains Disposable bool // Domain represents the component after the '@' character. // It is lower-cased since it's case-insensitive. Domain string // LocalPart represents the component before the '@' character. LocalPart string }
ParsedEmail returns a parsed email address.
An email address is made up of 3 components: <local-part>@<domain>. The local-part is case-sensitive according to the specs, but most (if not all) reputable email services will treat it as case-insensitive. The domain is case-insensitive.
func ParseEmail ¶
func ParseEmail(email string, caseSensitive ...bool) (ParsedEmail, error)
ParseEmail parses a given email address. Set caseSensitive to true if you want the local-part to be considered case-sensitive. The default value is false. Basic email validation is performed but it is not comprehensively checked.
See https://github.com/badoux/checkmail for a more robust validation solution.
See also https://davidcel.is/posts/stop-validating-email-addresses-with-regex.