Email Validation

Performs a full mailbox validation on the supplied email address.

Version 1.2

Takes one or more email addresses as an input and performs validation, returning a list of the results. The maximum number of input email addresses is 100 per call.

7th September 2023, implementing a change to:

Add new attributes do_not_send, risk, reason and subdomain.

Depreciate attributes do_not_mail (replaced with do_not_send), spamtrap, abuse, domain_age_days. See here for more information.

Previous documentation for Email validation v1.1 is available here

Resource URL

    POST    https://hosted.mastersoftgroup.com/harmony/rest/{locale}/validate/email

Request

The request body is an EmailRestRequest object:

    {
        "payload": [ 
            { "address": "jim@hotmail.com" },
             { "address": "jimmy@yahoo.com" }, 
            { "address": "thiswilltimeout@email.com" } 
        ],
        "sourceOfTruth": "VE_ALL",
        "featureOptions: { "timeout": "1500" }
    }
    

Response

The response body is an EmailRestResponse object. Sample responses below:

{
            "address": "jim@hotmail.com",
            "attributes": {
                "catchAll": "false",
                "hashmd5": "3e9385d795906ee1a3e04aa93bfa3a41",
                "hashsha256": "4c93fb55adc0297ee4086a8d047ff7ca694784c690703eab0f215685db180f37",
                "domain_exists": "VALID",
                "mailserver_exists": "VALID",
                "deliverable": "DELIVERABLE",
                "email_valid": "true",
                "message": "Email verified.",
                "disposable": "false",
                "email_exists": "VALID",
                "do_not_mail": "false",
                "hashsha1": "7a90bf8dcac4717728d4f36e291ff17255dadeb2",
                "do_not_send": "false",
                "rolebased": "false",
                "domain": "hotmail.com",
                "subdomain": "false",
                "risk": "LOW",
                "account": "jim"
            },
            "reason": [],
            "formatValidated": true,
            "blackListValidated": true,
            "domainValidated": true,
            "mailServerValidated": true,
            "mailBoxValidated": true
        },
        // Example: Email address does not exist on mail server
        {
            "address": "jimmy@yahoo.com",
            "attributes": {
                "catchAll": "false",
                "hashmd5": "efa811854abb0ad7de2579a349c2d470",
                "hashsha256": "1bc88ec6d822c4bd4c88b399ee7874effea66c26e5a1ac895dbd263792d26ca4",
                "domain_exists": "VALID",
                "mailserver_exists": "VALID",
                "deliverable": "UNDELIVERABLE",
                "email_valid": "true",
                "message": "Email address does not exist on mail server.",
                "disposable": "false",
                "email_exists": "INVALID",
                "do_not_mail": "false",
                "hashsha1": "225da63df3d2b1fb9fd6b49e7f8068da88c23733",
                "do_not_send": "false",
                "rolebased": "false",
                "domain": "yahoo.com",
                "subdomain": "false",
                "risk": "HIGH",
                "account": "jimmy"
            },
            "reason": [
                "mailbox_does_not_exist"
            ],
            "formatValidated": true,
            "blackListValidated": true,
            "domainValidated": true,
            "mailServerValidated": true,
            "mailBoxValidated": false
        },
```
        //request timeout example
        {
            "address": "thiswilltimeout@email.com",
            "attributes": {
                "hashsha1": "b89406e03dd7cf89e55c1353f9fd3f5e940abbf4",
                "hashmd5": "04097aeaaafe1b91144a006ea0dc2921",
                "hashsha256": "ffc36bbab1970bfa0aeef8fdb989f396dea4d0ad2f7df3d6dd2349430c71a944",
                "domain_exists": "UNKNOWN",
                "mailserver_exists": "UNKNOWN",
                "email_valid": "UNKNOWN",
                "message": "Timeout Exceeded",
                "email_exists": "UNKNOWN"
            },
            "formatValidated": true,
            "blackListValidated": true,
            "domainValidated": false,
            "mailServerValidated": false,
            "mailBoxValidated": false,
            "reason": ["req_timeout"]
        }
    ]
}

Response Elements

The response attributes are listed below. These are listed in the order expected when validating email addresses.

Reason List

Response timings

We make live calls to domains located all around the world that have variable protocols and capacities. The vast majority of calls, in particular to major ISP's operate within the desire response times. A small amount a domains will result in network, server latency and security protocols variables like mail transfer agents that can impact the overall latency of the service.

This is an industry wide issue when sending requests to domains around the world. Our expected ranges of performance results are:

  • 96%-98% of all domains sit between 1 to 5 seconds.

  • All the major ISP's are 1 to 3 secs.

  • 2%-4% will take longer than 5 seconds.

This can cause impacts in your customer experience. If this is an issue for your implementation we recommend implementing a timeout function when calling our Email Validation API and handling as an 'unknown' response to the end user.

Depreciated Attributes

In August 2023, the following attributes have been depreciated.

do_not_mail: depreciated and replaced with do_not_send because of naming confusion with anti-spam compliance. do_not_mail and do_not_send is a recommendation to protect your sender reputation score.

spamtrap: Depreciated due to privacy compliance.

abuse: Depreciated due to privacy compliance.

domain_age_days: Depreciated and superseded with new attributes contained within reason being high_risk_domain, immature_domain, tld_risk.

Last updated