Skip to content

Instantly share code, notes, and snippets.

Created April 25, 2019 09:05
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save finalwebsites/59e76ce179aa20dca1aa8a1b860d8b7b to your computer and use it in GitHub Desktop.
Check your old mailing list with the Mailboxlayer API and the results in a CSV file
ini_set('memory_limit', '1024M'); // should be enough for thousands of email addresses
$fp = fopen('emails-checked.csv', 'w');
fputcsv($fp, array('Email address', 'Valid MX', 'Valid SMTP', 'Score'));
$count = 0;
if (($handle = fopen("emails-need-to-be-checked.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$ch = curl_init(''.$api_key.'&email='.$data[0]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
$validationResult = json_decode($json, true);
$row = array($data[0], $validationResult['mx_found'], $validationResult['smtp_check'], $validationResult['score']);
fputcsv($fp, $row);
if ($count % 4 == 1) sleep(1); // Don't reach the 300 requests/minute rate limit
Copy link

We use this snippet for mailing list which hasn't been user for more than 6 month. This way we keep the bounce rate for email campaigns very low.
Read our blog post about email address validation to learn more about the Mailboxlayer API.

Your emails-need-to-be-checked.csv file should contain only the email address (one for each row).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment