diff --git a/classes/mail/Mail.class.php b/classes/mail/Mail.class.php index 75afc3752..211a3a673 100644 --- a/classes/mail/Mail.class.php +++ b/classes/mail/Mail.class.php @@ -211,10 +211,18 @@ class Mail extends Rhymix\Framework\Mail * Check if param is a valid email or not * * @param string $email_address Email address to check + * @param bool $restrictive * @return string */ - public static function isVaildMailAddress($email_address) + public static function isVaildMailAddress($email_address, $restrictive = true) { + // Restrictive mode + if ($restrictive) + { + return preg_match('/^[\w-]+((?:\.|\+|\~)[\w-]+)*@[\w-]+(\.[\w-]+)+$/', $email_address) ? $email_address : ''; + } + + // RFC mode $validator = new \Egulias\EmailValidator\EmailValidator; $rfc = new \Egulias\EmailValidator\Validation\RFCValidation; if($validator->isValid($email_address, $rfc)) diff --git a/common/framework/parsers/dbquery/VariableBase.php b/common/framework/parsers/dbquery/VariableBase.php index ceb6641ab..5c205eecd 100644 --- a/common/framework/parsers/dbquery/VariableBase.php +++ b/common/framework/parsers/dbquery/VariableBase.php @@ -405,7 +405,7 @@ class VariableBase { case 'email': case 'email_address': - if (!preg_match('/^[\w-]+((?:\.|\+|\~)[\w-]+)*@[\w-]+(\.[\w-]+)+$/', $value)) + if (!\Mail::isVaildMailAddress($value)) { throw new \Rhymix\Framework\Exceptions\QueryError('Variable ' . $this->var . ' for column ' . $column . ' must contain a valid e-mail address'); } diff --git a/tests/unit/framework/MailTest.php b/tests/unit/framework/MailTest.php index f31f21047..dc529cda6 100644 --- a/tests/unit/framework/MailTest.php +++ b/tests/unit/framework/MailTest.php @@ -188,7 +188,9 @@ class MailTest extends \Codeception\Test\Unit { $this->assertEquals('devops@rhymix.org', Mail::isVaildMailAddress('devops@rhymix.org')); $this->assertEquals('some+thing@gmail.com', Mail::isVaildMailAddress('some+thing@gmail.com')); - $this->assertEquals('weird@localhost', Mail::isVaildMailAddress('weird@localhost')); + $this->assertEquals('', Mail::isVaildMailAddress('weird@localhost')); + $this->assertEquals('weird@localhost', Mail::isVaildMailAddress('weird@localhost', false)); $this->assertEquals('', Mail::isVaildMailAddress('invalid@')); + $this->assertEquals('', Mail::isVaildMailAddress('invalid@', false)); } }