Skip to content
This repository has been archived by the owner on Nov 26, 2017. It is now read-only.

Commit

Permalink
Merge pull request #1833 from fitorec/staging
Browse files Browse the repository at this point in the history
JMailHelper:isEmailAddress checked the IPv4 and IPv6 address in the domain
  • Loading branch information
eddieajau committed Apr 5, 2013
2 parents 3a16c36 + 9789033 commit 2556578
Showing 1 changed file with 1 addition and 77 deletions.
78 changes: 1 addition & 77 deletions libraries/joomla/mail/helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,82 +107,6 @@ public static function cleanAddress($address)
*/
public static function isEmailAddress($email)
{
// Split the email into a local and domain
$atIndex = strrpos($email, "@");
$domain = substr($email, $atIndex + 1);
$local = substr($email, 0, $atIndex);

// Check Length of domain
$domainLen = strlen($domain);

if ($domainLen < 1 || $domainLen > 255)
{
return false;
}

/*
* Check the local address
* We're a bit more conservative about what constitutes a "legal" address, that is, A-Za-z0-9!#$%&\'*+/=?^_`{|}~-
* Also, the last character in local cannot be a period ('.')
*/
$allowed = 'A-Za-z0-9!#&*+=?_-';
$regex = "/^[$allowed][\.$allowed]{0,63}$/";

if (!preg_match($regex, $local) || substr($local, -1) == '.')
{
return false;
}

// No problem if the domain looks like an IP address, ish
$regex = '/^[0-9\.]+$/';

if (preg_match($regex, $domain))
{
return true;
}

// Check Lengths
$localLen = strlen($local);

if ($localLen < 1 || $localLen > 64)
{
return false;
}

// Check the domain
$domain_array = explode(".", rtrim($domain, '.'));
$regex = '/^[A-Za-z0-9-]{0,63}$/';

foreach ($domain_array as $domain)
{

// Must be something
if (!$domain)
{
return false;
}

// Check for invalid characters
if (!preg_match($regex, $domain))
{
return false;
}

// Check for a dash at the beginning of the domain
if (strpos($domain, '-') === 0)
{
return false;
}

// Check for a dash at the end of the domain
$length = strlen($domain) - 1;

if (strpos($domain, '-', $length) === $length)
{
return false;
}
}

return true;
return (boolean) filter_var($email, FILTER_VALIDATE_EMAIL);
}
}

0 comments on commit 2556578

Please sign in to comment.