Checks an email address against the following RFCs: 3696, 1123, 4291, 5321, 5322
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
extras Changed all http links to https. Updated my links. Updated copyright.… Dec 5, 2016
test Semantic version numbering Dec 7, 2016
is_email.php Semantic version numbering Dec 7, 2016


Copyright 2008-2016 Dominic Sayers

BSD License (

How to use is_email()

  1. Add the downloaded file is_email.php to your project
  2. In your scripts use it like this:
	require_once 'is_email.php';
	if (is_email($email)) echo "$email is a valid email address";
  1. If you want to return detailed diagnostic error codes then you can ask is_email to do so. Something like this should work:
	require_once 'is_email.php';
	$email = '';
	$result = is_email($email, true, true);

	if ($result === ISEMAIL_VALID) {
		echo "$email is a valid email address";
	} else if ($result < ISEMAIL_THRESHOLD) {
		echo "Warning! $email has unusual features (result code $result)";
	} else {
		echo "$email is not a valid email address (result code $result)";
  1. Example scripts are in the extras folder

Version history

Date Component Version Notes
2016-12-07 (all) 3.0.7 Semantic version numbering
2016-12-05 (all) 3.06 Changed all http links to https. Updated my links. Updated copyright. Clarified license
2013-11-29 tests.xml 3.05 Changed Test #71 from ISEMAIL_RFC5321 to ISEMAIL_DEPREC
2013-11-29 meta.xml 3.05 Changed category of ISEMAIL_RFC5321_IPV6DEPRECATED to ISEMAIL_DEPREC
2011-07-14 tests.xml 3.04 Changed my link to
2011-05-23 tests.xml 3.02 tests.php: Argument no longer passed by reference (deprecated). Test#32: Changed domain to because no longer has an MX record.
2010-11-15 meta.xml 3.03 Clarified definition of Valid for numpties
2010-10-18 tests.xml 3.0 New schema designed to enhance fault identification.
2010-10-18 is_email.php 3.0 Forensic categorization of email validity