Documentation ¶
Index ¶
- Constants
- func GenerateRandomEmail(domain string) string
- func IsAddressValid(email string) bool
- type Gravatar
- type LookupError
- type Mx
- type Result
- type SMTP
- type Syntax
- type Verifier
- func (v *Verifier) AddDisposableDomains(domains []string) *Verifier
- func (v *Verifier) CheckGravatar(email string) (*Gravatar, error)
- func (v *Verifier) CheckMX(domain string) (*Mx, error)
- func (v *Verifier) CheckSMTP(domain, username string) (*SMTP, error)
- func (v *Verifier) DisableAPIVerifier(name string)
- func (v *Verifier) DisableAutoUpdateDisposable() *Verifier
- func (v *Verifier) DisableCatchAllCheck() *Verifier
- func (v *Verifier) DisableDomainSuggest() *Verifier
- func (v *Verifier) DisableGravatarCheck() *Verifier
- func (v *Verifier) DisableSMTPCheck() *Verifier
- func (v *Verifier) EnableAPIVerifier(name string) error
- func (v *Verifier) EnableAutoUpdateDisposable() *Verifier
- func (v *Verifier) EnableCatchAllCheck() *Verifier
- func (v *Verifier) EnableDomainSuggest() *Verifier
- func (v *Verifier) EnableGravatarCheck() *Verifier
- func (v *Verifier) EnableSMTPCheck() *Verifier
- func (v *Verifier) FromEmail(email string) *Verifier
- func (v *Verifier) HelloName(domain string) *Verifier
- func (v *Verifier) IsDisposable(domain string) bool
- func (v *Verifier) IsFreeDomain(domain string) bool
- func (v *Verifier) IsRoleAccount(username string) bool
- func (v *Verifier) ParseAddress(email string) Syntax
- func (v *Verifier) Proxy(proxyURI string) *Verifier
- func (v *Verifier) SuggestDomain(domain string) string
- func (v *Verifier) Verify(email string) (*Result, error)
Constants ¶
const ( // Standard Errors ErrTimeout = "The connection to the mail server has timed out" ErrNoSuchHost = "Mail server does not exist" ErrBlocked = "Blocked by mail server" // RCPT Errors ErrTryAgainLater = "Try again later" ErrFullInbox = "Recipient out of disk space" ErrTooManyRCPT = "Too many recipients" ErrNoRelay = "Not an open relay" ErrMailboxBusy = "Mailbox busy" ErrExceededMessagingLimits = "Messaging limits have been exceeded" ErrNotAllowed = "Not Allowed" ErrNeedMAILBeforeRCPT = "Need MAIL before RCPT" ErrRCPTHasMoved = "Recipient has moved" )
const ( GMAIL = "gmail" YAHOO = "yahoo" )
const ( SIGNUP_PAGE = "https://login.yahoo.com/account/create?specId=yidregsimplified&lang=en-US&src=&done=https%3A%2F%2Fwww.yahoo.com&display=login" SIGNUP_API = "https://login.yahoo.com/account/module/create?validateField=userId" // USER_AGENT Fake one to use in API requests USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36" )
Variables ¶
This section is empty.
Functions ¶
func GenerateRandomEmail ¶
GenerateRandomEmail generates a random email address using the domain passed. Used primarily for checking the existence of a catch-all address
func IsAddressValid ¶
IsAddressValid checks if email address is formatted correctly by using regex
Types ¶
type Gravatar ¶
type Gravatar struct { HasGravatar bool // whether has gravatar GravatarUrl string // gravatar url }
Gravatar is detail about the Gravatar
type LookupError ¶
type LookupError struct { Message string `json:"message" xml:"message"` Details string `json:"details" xml:"details"` }
LookupError is an MX dns records lookup error
func ParseSMTPError ¶
func ParseSMTPError(err error) *LookupError
ParseSMTPError receives an MX Servers response message and generates the corresponding MX error
func (*LookupError) Error ¶
func (e *LookupError) Error() string
type Mx ¶
type Mx struct { HasMXRecord bool // whether has 1 or more MX record Records []*net.MX // represent DNS MX records }
Mx is detail about the Mx host
type Result ¶
type Result struct { Email string `json:"email"` // passed email address Reachable string `json:"reachable"` // an enumeration to describe whether the recipient address is real Syntax Syntax `json:"syntax"` // details about the email address syntax SMTP *SMTP `json:"smtp"` // details about the SMTP response of the email Gravatar *Gravatar `json:"gravatar"` // whether or not have gravatar for the email Suggestion string `json:"suggestion"` // domain suggestion when domain is misspelled Disposable bool `json:"disposable"` // is this a DEA (disposable email address) RoleAccount bool `json:"role_account"` // is account a role-based account Free bool `json:"free"` // is domain a free email domain HasMxRecords bool `json:"has_mx_records"` // whether or not MX-Records for the domain }
Result is the result of Email Verification
type SMTP ¶
type SMTP struct { HostExists bool `json:"host_exists"` // is the host exists? FullInbox bool `json:"full_inbox"` // is the email account's inbox full? CatchAll bool `json:"catch_all"` // does the domain have a catch-all email address? Deliverable bool `json:"deliverable"` // can send an email to the email server? Disabled bool `json:"disabled"` // is the email blocked or disabled by the provider? }
SMTP stores all information for SMTP verification lookup
type Syntax ¶
type Syntax struct { Username string `json:"username"` Domain string `json:"domain"` Valid bool `json:"valid"` }
Syntax stores all information about an email Syntax
type Verifier ¶
type Verifier struct {
// contains filtered or unexported fields
}
Verifier is an email verifier. Create one by calling NewVerifier
func (*Verifier) AddDisposableDomains ¶
AddDisposableDomains adds additional domains as disposable domains.
func (*Verifier) CheckGravatar ¶
CheckGravatar will return the Gravatar records for the given email.
func (*Verifier) CheckMX ¶
CheckMX will return the DNS MX records for the given domain name sorted by preference.
func (*Verifier) CheckSMTP ¶
CheckSMTP performs an email verification on the passed domain via SMTP
- the domain is the passed email domain
- username is used to check the deliverability of specific email address,
if server is catch-all server, username will not be checked
func (*Verifier) DisableAPIVerifier ¶
func (*Verifier) DisableAutoUpdateDisposable ¶
DisableAutoUpdateDisposable stops previously started schedule job
func (*Verifier) DisableCatchAllCheck ¶
DisableCatchAllCheck disables catchAll check by smtp
func (*Verifier) DisableDomainSuggest ¶
DisableDomainSuggest will not suggest anything
func (*Verifier) DisableGravatarCheck ¶
DisableGravatarCheck disables check gravatar,
func (*Verifier) DisableSMTPCheck ¶
DisableSMTPCheck disables check email by smtp
func (*Verifier) EnableAPIVerifier ¶
EnableAPIVerifier API verifier is activated when EnableAPIVerifier for the target vendor. ** Please know ** that this is a tricky way (but relatively stable) to check if target vendor's email exists. If you use this feature in a production environment, please ensure that you have sufficient backup measures in place, as this may encounter rate limiting or other API issues.
func (*Verifier) EnableAutoUpdateDisposable ¶
EnableAutoUpdateDisposable enables update disposable domains automatically
func (*Verifier) EnableCatchAllCheck ¶
EnableCatchAllCheck enables catchAll check by smtp for most ISPs block outgoing catchAll requests through port 25, to prevent spam, we don't check catchAll by default
func (*Verifier) EnableDomainSuggest ¶
EnableDomainSuggest will suggest a most similar correct domain when domain misspelled
func (*Verifier) EnableGravatarCheck ¶
EnableGravatarCheck enables check gravatar, we don't check gravatar by default
func (*Verifier) EnableSMTPCheck ¶
EnableSMTPCheck enables check email by smtp, for most ISPs block outgoing SMTP requests through port 25, to prevent spam, we don't check smtp by default
func (*Verifier) IsDisposable ¶
IsDisposable checks if domain is a disposable domain
func (*Verifier) IsFreeDomain ¶
IsFreeDomain checks if domain is a free domain
func (*Verifier) IsRoleAccount ¶
IsRoleAccount checks if username is a role-based account
func (*Verifier) ParseAddress ¶
ParseAddress attempts to parse an email address and return it in the form of an Syntax
func (*Verifier) Proxy ¶
Proxy sets a SOCKS5 proxy to verify the email, proxyURI should be in the format: "socks5://user:password@127.0.0.1:1080?timeout=5s". The protocol could be socks5, socks4 and socks4a.
func (*Verifier) SuggestDomain ¶
SuggestDomain checks if domain has a typo and suggests a similar correct domain from metadata, returns a suggestion