Skip to content
← Back to Snippets
Code

Email Delivery Result Parser

Parses mail delivery provider responses into accepted, deferred, bounced, or failed status records.

Purpose

Parses mail delivery provider responses into accepted, deferred, bounced, or failed status records.

Snippet details

ContextEmailLevelAdvancedCopy-and-paste statusMarked safe after review.

Categories

  • Security

Code

<?php

/*
 * Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
 * Free for personal and internal use. Paid project use requires visible credit
 * to Jeffery L. Paris. Corporate use requires a paid license fee unless a
 * separate written license states otherwise.
 */

/**
 * Email Delivery Result Parser.
 *
 * Purpose:
 * Parses mail delivery provider responses into accepted, deferred, bounced, or failed status records.
 *
 * @param array $provider_response Mail provider response data.
 * @return array Normalized delivery status.
 */
function ogSnippetEmailDeliveryResultParser(array $provider_response): array {
	$status = 'failed';
	$code = 0;
	if (isset($provider_response['code'])) {
		$code = (int) $provider_response['code'];
	}

	$message = '';
	if (isset($provider_response['message'])) {
		$message = strtolower((string) $provider_response['message']);
	}
	if ($code >= 200 && $code < 300) {
		$status = 'accepted';
	}
	if (strpos($message, 'deferred') !== false || $code === 421) {
		$status = 'deferred';
	}
	if (strpos($message, 'bounce') !== false || strpos($message, 'invalid recipient') !== false) {
		$status = 'bounced';
	}
	return array('status' => $status, 'code' => $code, 'message' => $message);
}

$delivery = ogSnippetEmailDeliveryResultParser(array('code' => 250, 'message' => 'accepted by subspace relay'));
echo $delivery['status'];