One of the challenges with accepting user emails is the difficulty in knowing not only whether or not the email is syntactically correct, but also determining whether it’s real, whether it might be a trap, whether the user made a typo or not, etc.
Typos are in fact particularly pernicious, because they look right. For example, say your visitor enters someone@ggmail.com into your form. They meant to type someone@gmail.com, of course, but a simple syntactic checker won’t warn the visitor, won’t fix it, and so, ultimately the opportunity is lost (and your visitor wonders why she never heard from you).
Worse, some ant-spam companies deliberately register typo domains in order to catch “spammers” – yeah, not a fan of treating typos as spam either, yet here we are.
Enter FeedBlitz’s email address verification API. A quick and simple way to determine the likelihood that the address is correct (as well as validly formed), giving you the opportunity to double-check before any damage is done or opportunities missed.
End point:
https://api.feedblitz.com/f/?EmailVerify&key=<apikey>&email=<addresstoverify>
How does it work? We’ll grab that address and return XML that looks like this:
<emailvalidation>
<email>phil@yaho.com<email>
<suggest>phil@yahoo.com</suggest>
<valid>1</valid>
<permitted>1</permitted>
<role>0</role>
<domainexists>1</domainexists>
<mxresponds>0</mxresponds>
<trap>0</trap>
<faked>0</faked>
</emailvalidation>
Before reviewing the results, it’s worth noting that aside from basic validity, the other elements are sometimes statements of fact, and sometimes FeedBlitz’s strongly held opinion. What you do with that opinion is up to you.
In particular, an address being flagged as a trap might be a false positive (i.e. it’s actually legit). Conversely, an address that does not have the trap flag set could well be an old dead address that an anti-abuse company now uses as a trap – a false negative. There are, in other words, no guarantees.
That said, at FeedBlitz, we don’t allow (i.e. permitted is set to be 0) the following classes of address to be added:
- Role accounts (e.g. info@, sales@, all@ etc.)
- Any address that trips our trap logic.
- Any otherwise correctly formed address but where the domain doesn’t exist.
- Addresses that look spammy (a.b.c.d.e.f@gmail.com).
- Addresses submitted by suspect and known abusive IPs.
- List server / group addresses.
- and more….
So your mileage may vary – you may choose to allow role emails, for example, in your app. We just don’t care for them here.
In the above example, everything about phil@yaho.com seems fine – except that we think it is possibly a typo (because the suggestion element is present). We suggest you confirm with the user before accepting that email address.
Parameters
Required
- key
email should be URL encoded; both parameters and values are case insensitive.
Optional
Some parameters can cause performance to extend by several seconds, which might not be acceptable for your app. The optional parameters are:
Parameter | Remarks |
trapcheck | Set to 1 to force FeedBlitz to check apparently OK addresses against online resources. Even with caching, can add up to 5s to the call time. |
mxcheck | Checks that there is a mail server listening for email at the location specified by the email address’ domain. Again, may add several seconds to the call. |
Results
Element | Comments |
The email submitted to the call | |
suggest | Even if the submitted email is valid, it might be a typo; this element (if present) suggests an alternative which you might present to the user (e.g. “You typed phil@yyaho.com, did you mean phil@yahoo.com?”) to be sure that they entered the address correctly. The suggestion is not recursively checked for quality, however – it’s just a check to try to reduce user error. If the submitted address appears to be good, or FeedBlitz can’t get to an alternative suggestion it considers reasonable, this element will be empty. |
valid | 1 if the address submitted is a valid internet email address in form and structure. Covers new top level domains (like .club and .xyz); does not cover “international” domains in non-latin character sets. |
permitted | Whether or not FeedBlitz would allow the email address to be used. FeedBlitz is strict (we don’t allow role accounts or group / list servers, for example). You may use this as a data point to inform what you do with the overall end-user interaction. |
role | Indicates that the address is a role account (e.g. all@example.com, or sales@, or info@ etc.), or belongs to a group email / listserv system. Emailing this address is likely to reach more than one person, which is unlikely to be desirable. Further, role accounts are widely abused by spammers and aggressively filtered. It is best practice to not allow role accounts to join mailing lists for these reasons; and as such they are not permitted at FeedBlitz. |
domainexists | 0 if the domain specified doesn’t have an IP address when looked up. Note that this does not set the faked field – if this field is 0 you know the address is invalid. |
mxresponds | If mxcheck=1 is specified, FeedBlitz will check for the domain’s MX record (or A record in lieu) and attempt to contact the host on the standard Internet email port. If the attempt succeeds, this element will have a value of 1. Otherwise it is 0 if the attempt fails, and also 0 of mxcheck=1 is not specified in the call. |
trap | 1 if the domain is on a major blacklist, or our own research indicates with high confidence that the address specified is likely a spam trap and should be avoided. Note that 0 does not necessarily mean the address is not a trap; just that there are no clear indications that it is one. |
faked | High probability that the email address is faked by a spammer and unlikely to yield any material engagement. Lists and IPs sending email with low engagement will see deliverability and open rates suffer. We do not recommend adding or mailing addresses that appear to be faked. Faked addresses may be syntactically valid and at domains that exist with active email servers; addresses that set this flag are nevertheless suspect. |
Usage, Terms and Throttling
There’s no additional fee to use this API with a paid FeedBlitz account in good standing. You may only use this API on your own (i.e. the API key holder’s) behalf, and not as a way to provide your own materially equivalent service.
FeedBlitz tracks API usage and reserves the right to throttle your use of the API at its own discretion, potentially without notice.