diff --git a/classes/mail/Mail.class.php b/classes/mail/Mail.class.php index 347434786..b7058ec23 100644 --- a/classes/mail/Mail.class.php +++ b/classes/mail/Mail.class.php @@ -217,7 +217,9 @@ class Mail extends Rhymix\Framework\Mail */ public static function isVaildMailAddress($email_address) { - if(preg_match("/([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)/i", $email_address)) + $validator = new \Egulias\EmailValidator\EmailValidator; + $rfc = new \Egulias\EmailValidator\Validation\RFCValidation; + if($validator->isValid($email_address, $rfc)) { return $email_address; } diff --git a/tests/unit/framework/MailTest.php b/tests/unit/framework/MailTest.php index 90ac557fa..801b384af 100644 --- a/tests/unit/framework/MailTest.php +++ b/tests/unit/framework/MailTest.php @@ -173,4 +173,12 @@ class MailTest extends \Codeception\TestCase\Test $this->assertEquals('embed', $attachments[1]->type); $this->assertEquals('cid:thisismyrandomcid@rhymix.org', $attachments[1]->cid); } + + public function testEmailAddressValidator() + { + $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('invalid@')); + } }