Email verification documentation

Email verification documentation

Getting started

Verify550 is the ultimate tool for validation and verification all in one easy step. Validation (eHygienics technology) removes threats like bots, traps, protestors, litigators, syntax and checks the mx records for inconsistencies, while verification performs smtp handshakes recording the result giving you accurate information on soft or hard bounces.

You can verify emails with our online application or with our real-time API.

Our real-time API is available in PHP, Python, Node.js, and .net.

Follow along below to learn how to use Verify 550 to securely, easily, and efficiently validate and verify your list of email addresses with detailed reports.


Sign up

To begin using Verify 550 you will first need to create a free account. You can sign up by visiting the link here: https://app.verify550.com/signup

Look for a confirmation link and confirm you signed up. Login and you will see the main console.


Validating & Verifying Email Addresses

Utilize the drag-and-drop functionality to seamlessly transfer your list from your local drive directly into the designated area indicated by the dotted outline. Alternatively, opt for the ‘Import lists’ option and proceed through the straightforward steps to upload your list.

Upon successful upload, designate your file by selecting it, then initiate the processing by clicking ‘Start List.’ Allow a brief moment for the system to process the data, after which you’ll be able to download a thoroughly verified list. Keep in mind, the processing duration scales with the size of the list, necessitating patience for larger datasets.


How Verify 550 Works

Verify 550 uses a prominent mail transfer protocol called SMTP (Simple Mail Transfer Protocol) to check if the user’s email address is invalid or non-working without sending actual emails to that recipient address.

Although this is a simple approach, there is an overhead involved with SMTP, and email servers often behave unexpectedly.

Therefore, many companies rely on Verify 550 to provide email verification. We have been in the email and security industry for the last 10 years and have gained a reputation in the email verification process.

Here are our steps we use for emails validation and verification:

Email deduplication – Domains that match our existing database of invalid emails are removed

Domain validation – DNS entries for every email address are checked and validated

Spam-trap removal – Spam-traps and disposable emails are detected

Spamcop removal – Matches and removes against updated static list of 9 million spamcop traps

Risk validation – Remove all of the domains that match our existing database of invalid emails

Syntax verification – Email address syntax is verified according to IETF standard

MTA validation – Checks if a Mail-Transfer-Agent has a valid MX Record

Protestor removal – Matches against updated static list of 300 million protestors and growing

Litigator removal – Matches against updated static list of 12,000 litigators worldwide

Botclickers removal – Matches against updated domain, email and IP’s of known botclickers

Department role removal – Matches against emails that are shared with groups or departments

Domain blacklist – Matches and removes against known blacklist domains

Disposable removal – Matches and removes against temporary and/or disposable emails

 


File Verification

Verify550 provides multiple avenues for importing your email address list for verification purposes. You have the option to upload CSV, XLS, and TXT files directly from your local computer drive or from cloud storage platforms like Google Drive. Additionally, you can fetch the list from a web server for seamless integration

To upload a file, scroll to Verification on your dashboard,
click on Import lists and then specify where your file resides. You can
also drag and drop your files from your computer to the dotted area in
your dashboard.

 

 

 

 

While you are uploading a file, make sure the following conditions are met for the process process to work smoothly:

  • There is only one email address in each row
  • Email addresses should appear in the same column
  • The list should not have more than 1 million email addresses
  • The field names should appear in the first row of the list in order to categorize the list

Below is a screen shot of a file of email addresses to show you how the file should be properly formatted before verification:

Once a list has been processed by Verify 550, a Result column is
added in the list to categorize the status of each email. Read more
about these statuses at our Result Guide section.

This is how a processed list generally looks:


Downloading and Exporting Results

After the verification process, retrieve the results effortlessly in CSV or XLSX formats through a variety of options: opt for a single suppression category, amalgamate multiple suppression categories, isolate deliverables exclusively, or compile all outcomes into a unified file.

To access the verified results, proceed to the ‘Verification’ section within your dashboard. From the ‘Imported Lists’ section, select your desired file, then click ‘Download Results.’ A prompt will appear, allowing you to specify the file category (Deliverable/All Results/Custom Results) and format preference (XLSX/CSV).”

Downloading All Results

You can download your entire list by choosing All Results and then clicking on your desired file type.

 

 

 

Downloading Custom Results

If you want to specify the results downloaded, you can choose Custom Results to specify your criteria and then click on your desired file type.

 


Result Guide

Verify 550’s validation first scans to identify disposable, spam-trap, complaint (protestors), botclicker, litigator, spamcop and domain blacklist emails and then runs the email identification process for verification.

After your file has been validated and verified, each email address in the list will be labeled with one of the following statuses:

Color CodeStatusDescription
goodokAll is OK. The server is saying that it is ready to receive a letter to this address and no tricks have been detected
cautionok_for_allThe email server is saying that it forwards this email to a catch all
cautionthreat_stringCurse words, code, bot and seed strings inside emails
cautionaccept_allThe server is set to accept all emails at a specific domain. These domains accept any email you send to them
cautionseedArtificial email addresses which an email marketer owns
cautionthreat_domainsDomains of spam fighters and known complainers
cautiondepartmentEmail belonging to a group of people or a role
cautionsleeper_cellEmails hosted on a spam fighter server
cautionthreat_endingsGovernment and University mail exchanges
do not mailsyntax_errorThere is a syntax error in the email address
do not maildead_serverThe email server is dead, and no connection to it could be established
do not mailunknownThe email delivery failed, but no reason was given
do not maildisposableThe email is a temporary address to receive letters and expires after certain time period
do not mailspam_trapsThe email address is maintained by an ISP or a third party, which neither clicks nor opens emails
do not mailhard_bouncesStatic list of verified hard bounces – 1 billion
do not maillitigatorLitigators and lawyers whom sue email marketers (traps)
do not maillashLashback compliance traps
do not mailproofProofpoint spamtrap
do not mailmxMail exchange is not setup correctly
do not mailprotestorsComplainers, screamers and grumblers
do not mailspamcop_trapsSpamcop traps
do not mailspamtrapConfirmed spam fighter trap
do not mailsyntax_errorLeading, trailing spaces, unicode, latin and other characters
do not mailsmtp_errorThe SMTP answer from the server is invalid or the destination server reported an internal error to us
do not mailsmtp_protocolThe destination server allowed us to connect but the SMTP session was closed before the email was verified
do not mailunknown_emailThe server said that the delivery failed and that the email address couln't be verified
do not mailemail_disabledThe email account is suspended, disabled, or limited and cannot receive emails
do not mailinvalid vendor responseThe response from the email verification service provider (the “vendor”) is unexpected, malformed, or does not conform to the standard expected by the user or system requesting the verification.

 


API

Our API makes use of api key based authentication. You can generate your API key by visiting the API section of your dashboard.

APIKey

Security scheme type: API Key

query parameter name:secret

Email Validation API

Verify 550 provides a developer API to integrate the email verification process with your service.

Our API provides the ability to check individual email addresses and can accept an email list through file upload.

/verifyEmail

Submits an email address for verification.

We provide several API libraries like Python, Ruby, C#, PHP.

Python

OneByOne Verification:

Code source:

GET Single Verification

 
import requests url = "https://app.verify550.com/api/singlemail?secret=YOUR_API_KEY&email=exemple@domain.com" 
payload={} headers = {} response = requests.request("GET", url, headers=headers, data=payload) 
print(response.text) 

Bulk Verification – Upload file

import requests
url = "https://app.verify550.com/api/bulk?secret=YOUR_API_KEY&filename=emailtest2c.csv"
payload={}
files=[
('file_contents',('emailtest2c.csv',open('/Users/mac/Downloads/emailtest2c.csv','rb'),'text/csv'))
]
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
 Bulk Verification - Download ready file
import requests
url = "https://app.verify550.com/api/details?secret=YOUR_API_KEY&id=File_id"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)

Ruby

Single verification

require "uri"
require "net/http"
url = URI("https://app.verify550.com/api/singlemail?secret=YOUR_API_KEY&email=exemple@domain.com")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body&

Bulk verification

require "uri"
require "net/http"
url = URI("https://app.verify550.com/api/bulk?secret=YOUR_API_KEY&filename=emailtest2c.csv")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
form_data = [['file_contents', File.open('/Users/mac/Downloads/emailtest2c.csv')]]
request.set_form form_data, 'multipart/form-data'
response = https.request(request)
puts response.read_body

Bulk Verification – Download ready file

require "uri"
require "net/http"
url = URI("https://app.Everify550.com/api/details?secret=YOUR_API_KEY&id=File_id")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
response = https.request(request)
puts response.read_body&lt

PHP
Api One By One

$curl = curl_init('https://".env('HOSTNAME')."/api/verifyemail?secret={{API_SECRET}}&email={{EMAIL_ADDRESS}}');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($curl);
curl_close($curl);

echo $response;

Api – Bulk emails verification


$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://".env('HOSTNAME')."/api/bulk?secret={{API_SECRET}}&filename=example.csv',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array('file_contents'=> new CURLFILE('path/to/your/file.csv')),
));

$response = curl_exec($curl);
curl_close($curl);

echo $response;

Bulk Verification – Response


{
"success":true,
"message":"",
"id":"12702",
"job_id":"1706543459",
"filename":"example.csv"
}

Get job details:

curl 'https://app.verify550.com/api/getjob/{{JOB_ID}}?secret={{API_SECRET}}'

Response:


{
"success": true,
"message": null,
"data": {
"jobId": "1706543459",
"status": "finished",
"file_name": "example.csv",
"count": 1221,
"duplicates": 0,
"processed": 1221,
"uploadTime": "2024-01-29T13:09:35.008Z",
"startTime": "2024-01-29T13:09:36.619Z",
"completionTime": "2024-01-29T13:10:26.247Z",
"suppression_results": {
"ok": 750,
"email_disabled": 118,
"disposables": 1,
"unknown": 1,
"ok_for_all": 116,
"antispam_system": 8,
"spamtraps": 0,
"spamcops": 1,
"litigators": 0,
"complainers": 10,
"hard_bounces": 17,
"soft_bounce": 0,
"dead_server": 0,
"invalid_mx": 53,
"invalid_syntax": 2,
"smtp_protocol": 4,
"sleeper_cell": 0,
"seeds": 0,
"email_bot": 25,
"bot_clickers": 0,
"blacklisted": 62,
"departmental": 43,
"lashback": 0,
"thread_endings": 0,
"thread_string": 0,
"advisory_trap": 0,
"invalid_vendor_response": 3
           }
      }
}

Download all results:

curl 'https://app.verify550.com/api/jobexport/{{JOB_ID}}&secret={{API_SECRET}}'

Download results by category:

curl 'https://app.verify550.com/api/jobexport/{{JOB_ID}}?categories=ok,email_disabled,unknown&secret={{API_SECRET}}'

Download results by file format:

curl 'https://app.verify550.com/api/jobexport/{{JOB_ID}}?format=xlsx&secret={{API_SECRET}}'

Response will be a .zip file with the results files in the format required and categories selected

Formats accepted are: xlsx or c
Categories accepted are: 
- ok
- ok_for_all
- dead_server
- invalid_mx
- email_disabled
- invalid_syntax
- smtp_protocol
- unknown
- antispam_system
- soft_bounce
- complainers
- sleeper_cell
- seeds
- invalid_vendor_response
- hard_bounces
- email_bot
- spamcops
- spamtraps
- threat_endings
- threat_string
- advisory_trap
- blacklisted
- disposables
- bot_clickers
- litigators
- departmental