Author: as
Date: Mon Aug 6 09:01:05 2007
New Revision: 5816
Log:
- Implemented feature request #8436: Added the method validateEmailAddress()
in ezcMailTools.
Added:
trunk/Mail/tests/tools/
trunk/Mail/tests/tools/data/
trunk/Mail/tests/tools/data/addresses_correct.txt (with props)
trunk/Mail/tests/tools/data/addresses_correct_mx.txt (with props)
trunk/Mail/tests/tools/data/addresses_incorrect.txt (with props)
trunk/Mail/tests/tools/data/addresses_incorrect_mx.txt (with props)
Modified:
trunk/Mail/ChangeLog
trunk/Mail/docs/tutorial/tutorial_tools.php
trunk/Mail/src/tools.php
trunk/Mail/tests/tools_test.php
Modified: trunk/Mail/ChangeLog
==============================================================================
--- trunk/Mail/ChangeLog [iso-8859-1] (original)
+++ trunk/Mail/ChangeLog [iso-8859-1] Mon Aug 6 09:01:05 2007
@@ -13,6 +13,8 @@
specified messages.
- Implemented feature request #10996: Added support for the SMTP authentication
methods DIGEST-MD5, CRAM-MD5, NTLM and LOGIN.
+- Implemented feature request #8436: Added the method validateEmailAddress()
+ in ezcMailTools.
1.3.1 - Monday 30 July 2007
Modified: trunk/Mail/docs/tutorial/tutorial_tools.php
==============================================================================
--- trunk/Mail/docs/tutorial/tutorial_tools.php [iso-8859-1] (original)
+++ trunk/Mail/docs/tutorial/tutorial_tools.php [iso-8859-1] Mon Aug 6
09:01:05 2007
@@ -15,11 +15,18 @@
var_dump( ezcMailTools::parseEmailAddress( $addresses ) );
var_dump( ezcMailTools::parseEmailAddresses( $addresses ) );
+// Validate an email address
+$isValid = ezcMailTools::validateEmailAddress( '[EMAIL PROTECTED]' );
+
+// Validate an email address with MX records check
+$isValid = ezcMailTools::validateEmailAddress( '[EMAIL PROTECTED]', true );
+
// Create a new mail object
$mail = new ezcMail();
$mail->from = $mailAddresses[1];
$mail->addTo( $mailAddresses[0] );
$mail->subject = "Top secret";
+
// Use the lineBreak() method
$mail->body = new ezcMailText( "Confidential" . ezcMailTools::lineBreak() .
"DO NOT READ" );
$mail->generate();
Modified: trunk/Mail/src/tools.php
==============================================================================
--- trunk/Mail/src/tools.php [iso-8859-1] (original)
+++ trunk/Mail/src/tools.php [iso-8859-1] Mon Aug 6 09:01:05 2007
@@ -281,6 +281,160 @@
}
/**
+ * Returns true if $address is a valid email address, false otherwise.
+ *
+ * By default it will only validate against the same regular expression
+ * used in ext/filter. It follows
+ * [EMAIL PROTECTED] http://www.faqs.org/rfcs/rfc821.html RFC822} and
+ * [EMAIL PROTECTED] http://www.faqs.org/rfcs/rfc821.html RFC2822}.
+ *
+ * If $checkMxRecords is true, then an MX records check will be performed
+ * also, by sending a test mail (RCPT TO) to $address using the MX records
+ * found for the domain part of $address.
+ *
+ * The input email address $address should be trimmed from white spaces
+ * and/or quotes around it before calling this function (if needed).
+ *
+ * An email address has this form:
+ * <code>
+ * [EMAIL PROTECTED]
+ * </code>
+ *
+ * The localpart has these rules:
+ * - allowed characters: . + ~ / ' - _ ` ^ $ % & ! ' | {
+ * - the dot (.) cannot be the first or the last character
+ * - the double-quote character (") can only surround the localpart (so
+ * if it appears it must be the first and the last character of
localpart)
+ * - spaces are allowed if the localpart is surrounded in double-quotes
+ * - other ASCII characters (even from the extended-ASCII set) are allowed
+ * if the localparts is surrounded in double-quotes
+ * - the double-quotes character (") cannot be escaped to appear in a
+ * localpart surrounded by double quotes (so "john"doe"@example.com is
not
+ * a valid email address)
+ *
+ * The domainpart has the same rules as a domain name, as defined in
+ * [EMAIL PROTECTED] http://www.faqs.org/rfcs/rfc821.html RFC822} and
+ * [EMAIL PROTECTED] http://www.faqs.org/rfcs/rfc821.html RFC2822}.
+ *
+ * See also the test files (in the "Mail/tests/tools/data" directory) for
+ * examples of correct and incorrect email addresses.
+ *
+ * @param string $address
+ * @param bool checkMxRecords
+ * @return bool
+ */
+ public static function validateEmailAddress( $address, $checkMxRecords =
false )
+ {
+ $pattern =
'/^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]{2,}))$/';
+
+ if ( preg_match( $pattern, $address ) )
+ {
+ if ( $checkMxRecords )
+ {
+ return self::validateEmailAddressMx( $address );
+ }
+ else
+ {
+ // $address passed through regexp, with no MX checks
+ return true;
+ }
+ }
+ else
+ {
+ // $address did not pass through regexp
+ return false;
+ }
+ }
+
+ /**
+ * Checks if the email address $address is valid based on its MX records.
+ *
+ * Steps:
+ * - the MX records are fetched for the domain part of $address, along
with
+ * their weights
+ * - the MX records are sorted based on the weights
+ * - for each MX record a connection is open
+ * - a test mail (RCPT TO) is tried to be sent to $address
+ * - if one test mail succeeds, then the address is valid, else invalid
+ *
+ * @param string $address
+ * @return bool
+ */
+ protected static function validateEmailAddressMx( $address )
+ {
+ $timeoutOpen = 3; // for fsockopen()
+ $timeoutConnection = 5; // for stream_set_timeout()
+
+ list( $local, $domain ) = explode( '@', $address );
+ if ( !empty( $domain ) )
+ {
+ if ( getmxrr( $domain, $hosts, $weights ) )
+ {
+ for ( $i = 0; $i < count( $hosts ); $i++ )
+ {
+ $mx[$hosts[$i]] = $weights[$i];
+ }
+
+ asort( $mx );
+ $mx = array_keys( $mx );
+ }
+ elseif ( checkdnsrr( $domain, 'A' ) )
+ {
+ $mx[0] = gethostbyname( $domain );
+ }
+ else
+ {
+ $mx = array();
+ }
+
+ if ( ( $numberOfMx = count( $mx ) ) > 0 )
+ {
+ $smtp = array(
+ "HELO smtp.ez.no",
+ "MAIL FROM: <[EMAIL PROTECTED]>",
+ "RCPT TO: <{$address}>",
+ "QUIT",
+ );
+
+ for( $i = 0; $i < $numberOfMx; $i++ )
+ {
+ if ( $socket = @fsockopen( $mx[$i], 25, $errno = 0,
$errstr = 0, $timeoutOpen ) )
+ {
+ $response = fgets( $socket );
+ stream_set_timeout( $socket, $timeoutConnection );
+ $meta = stream_get_meta_data( $socket );
+ if( !$meta['timed_out'] && !preg_match( '/^2\d\d[
-]/', $response ) )
+ {
+ return false;
+ }
+ foreach ( $smtp as $command )
+ {
+ fputs( $socket, "{$command}\r\n" );
+ $response = fgets( $socket, 4096 );
+ if( !$meta['timed_out'] && preg_match( '/^5\d\d[
-]/', $response ) )
+ {
+ return false;
+ }
+ }
+ fclose( $socket );
+ return true;
+ }
+ elseif ( $i === $numberOfMx - 1 )
+ {
+ // none of the mail servers could be contacted
+ return false;
+ }
+ }
+ }
+ else
+ {
+ // no mail servers found
+ return false;
+ }
+ }
+ }
+
+ /**
* Returns an unique message ID to be used for a mail message.
*
* The hostname $hostname will be added to the unique ID as required by
RFC822.
Added: trunk/Mail/tests/tools/data/addresses_correct.txt
==============================================================================
--- trunk/Mail/tests/tools/data/addresses_correct.txt (added)
+++ trunk/Mail/tests/tools/data/addresses_correct.txt [iso-8859-1] Mon Aug 6
09:01:05 2007
@@ -1,0 +1,165 @@
+# Enter email addresses which should be validated as "correct".
+#
+# Enter one email address per line.
+#
+# An email address has this form:
+# [EMAIL PROTECTED]
+#
+# Valid email addresses should follow RFC822 and RFC2822.
+#
+# Comments are entered as "# comment", and comments are useful for disabling
+# an email address for testing purposes.
+
+# domain part as hostname
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+
+# domain part as IP address
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+
+# localpart
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+|@example.com
[EMAIL PROTECTED]
+/@example.com
+'@example.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+&@example.com
[EMAIL PROTECTED]
+
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+john|[EMAIL PROTECTED]
[EMAIL PROTECTED]
+john/[EMAIL PROTECTED]
+john'[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+john&[EMAIL PROTECTED]
[EMAIL PROTECTED]
+
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+johndoe|@example.com
[EMAIL PROTECTED]
+johndoe/@example.com
+johndoe'@example.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+johndoe&@example.com
[EMAIL PROTECTED]
+
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+john/[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+|johndoe|@example.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+'johndoe'@example.com
+"[[ johndoe ]]"@example.com
+"john.'doe'"@example.com
+
+"john doe"@example.com
+"john\doe"@example.com
+"john?doe"@example.com
+"john,doe"@example.com
+"[EMAIL PROTECTED]"@example.com
+"john=doe"@example.com
+"john<doe"@example.com
+"john>doe"@example.com
+"john;doe"@example.com
+"john:doe"@example.com
+"john¢doe"@example.com
+"john±doe"@example.com
+"john³doe"@example.com
+"johnµdoe"@example.com
+"john¶doe"@example.com
+"john·doe"@example.com
+"john¸doe"@example.com
+"john¹doe"@example.com
+"john°doe"@example.com
+"john½doe"@example.com
+"john»doe"@example.com
+"john§doe"@example.com
+"john®doe"@example.com
+"john¯doe"@example.com
+"john¬doe"@example.com
+"john¼doe"@example.com
+"johnþdoe"@example.com
+"john¡doe"@example.com
+"john£doe"@example.com
+"john¤doe"@example.com
+"john¥doe"@example.com
+"johnÃdoe"@example.com
+"john¦doe"@example.com
+"johnªdoe"@example.com
+"john¨doe"@example.com
+"john©doe"@example.com
+"john¿doe"@example.com
+"john¾doe"@example.com
+"john¼doe"@example.com
+"john«doe"@example.com
+
Propchange: trunk/Mail/tests/tools/data/addresses_correct.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Mail/tests/tools/data/addresses_correct_mx.txt
==============================================================================
--- trunk/Mail/tests/tools/data/addresses_correct_mx.txt (added)
+++ trunk/Mail/tests/tools/data/addresses_correct_mx.txt [iso-8859-1] Mon Aug
6 09:01:05 2007
@@ -1,0 +1,14 @@
+# Enter email addresses which should be validated as "correct with MX".
+#
+# Enter one email address per line.
+#
+# An email address has this form:
+# [EMAIL PROTECTED]
+#
+# Valid email addresses should follow RFC822 and RFC2822.
+#
+# Comments are entered as "# comment", and comments are useful for disabling
+# an email address.
+
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Propchange: trunk/Mail/tests/tools/data/addresses_correct_mx.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Mail/tests/tools/data/addresses_incorrect.txt
==============================================================================
--- trunk/Mail/tests/tools/data/addresses_incorrect.txt (added)
+++ trunk/Mail/tests/tools/data/addresses_incorrect.txt [iso-8859-1] Mon Aug 6
09:01:05 2007
@@ -1,0 +1,213 @@
+# Enter email addresses which should be validated as "incorrect".
+#
+# Enter one email address per line.
+#
+# An email address has this form:
+# [EMAIL PROTECTED]
+#
+# Valid email addresses should follow RFC822 and RFC2822.
+#
+# Comments are entered as "# comment", and comments are useful for disabling
+# an email address.
+
+# domain part as hostname
+johndoe
+johndoe@
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED],com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]'ample.com
[EMAIL PROTECTED]"ample.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]|e.com
[EMAIL PROTECTED]
[EMAIL PROTECTED] ample.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED] m
[EMAIL PROTECTED]
+johndoe@(example).com
[EMAIL PROTECTED]
+johndoe@"example".com
+johndoe@'example'.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED],,,
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]()
[EMAIL PROTECTED]""
[EMAIL PROTECTED]''
[EMAIL PROTECTED]||
[EMAIL PROTECTED]
+johndoe@|example.com
+johndoe@,example.com
[EMAIL PROTECTED]
+@
[EMAIL PROTECTED]
+
+# domain part as IP address
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+johndoe@(127.0.0.1)
[EMAIL PROTECTED]
+johndoe@"127.0.0.1"
+johndoe@'127.0.0.1'
+johndoe@|127.0.0.1|
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+
+# localpart
+example.com
[EMAIL PROTECTED]
+
[EMAIL PROTECTED]
+,@example.com
[EMAIL PROTECTED]
+"@example.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+<@example.com
+>@example.com
+:@example.com
+;@example.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+johndoe,@example.com
[EMAIL PROTECTED]
+johndoe"@example.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+johndoe<@example.com
+johndoe>@example.com
+johndoe:@example.com
+johndoe;@example.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+john [EMAIL PROTECTED]
+
+john,[EMAIL PROTECTED]
+john"[EMAIL PROTECTED]
[EMAIL PROTECTED]@example.com
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+john<[EMAIL PROTECTED]
+john>[EMAIL PROTECTED]
+john;[EMAIL PROTECTED]
+john:[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+
+- johndoe [EMAIL PROTECTED]
[EMAIL PROTECTED]
+(johndoe)@example.com
+<johndoe>@example.com
Propchange: trunk/Mail/tests/tools/data/addresses_incorrect.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Mail/tests/tools/data/addresses_incorrect_mx.txt
==============================================================================
--- trunk/Mail/tests/tools/data/addresses_incorrect_mx.txt (added)
+++ trunk/Mail/tests/tools/data/addresses_incorrect_mx.txt [iso-8859-1] Mon Aug
6 09:01:05 2007
@@ -1,0 +1,14 @@
+# Enter email addresses which should be validated as "incorrect with MX".
+#
+# Enter one email address per line.
+#
+# An email address has this form:
+# [EMAIL PROTECTED]
+#
+# Valid email addresses should follow RFC822 and RFC2822.
+#
+# Comments are entered as "# comment", and comments are useful for disabling
+# an email address.
+
[EMAIL PROTECTED]
[EMAIL PROTECTED]
Propchange: trunk/Mail/tests/tools/data/addresses_incorrect_mx.txt
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/Mail/tests/tools_test.php
==============================================================================
--- trunk/Mail/tests/tools_test.php [iso-8859-1] (original)
+++ trunk/Mail/tests/tools_test.php [iso-8859-1] Mon Aug 6 09:01:05 2007
@@ -20,7 +20,6 @@
*/
class ezcMailToolsTest extends ezcTestCase
{
-
/**
* Tests if ezcMailTools::composeEmailAddress works as it should
* @todo test if no 'email' is given.
@@ -237,6 +236,57 @@
$this->assertEquals( '[EMAIL PROTECTED]', $add[1]->email );
}
+ public function testValidateEmailAddressCorrect()
+ {
+ $data = file_get_contents( dirname( __FILE__ ) .
'/tools/data/addresses_correct.txt' );
+ $addresses = split( "\n", $data );
+ foreach ( $addresses as $address )
+ {
+ if ( strlen( trim( $address ) ) > 1 && $address{0} !== '#' )
+ {
+ $this->assertEquals( true, ezcMailTools::validateEmailAddress(
$address ), "Failed asserting that {$address} is correct." );
+ }
+ }
+ }
+
+ public function testValidateEmailAddressCorrectMX()
+ {
+ $data = file_get_contents( dirname( __FILE__ ) .
'/tools/data/addresses_correct_mx.txt' );
+ $addresses = split( "\n", $data );
+ foreach ( $addresses as $address )
+ {
+ if ( strlen( trim( $address ) ) > 1 && $address{0} !== '#' )
+ {
+ $this->assertEquals( true, ezcMailTools::validateEmailAddress(
$address, true ), "Failed asserting that {$address} is correct with MX." );
+ }
+ }
+ }
+
+ public function testValidateEmailAddressIncorrect()
+ {
+ $data = file_get_contents( dirname( __FILE__ ) .
'/tools/data/addresses_incorrect.txt' );
+ $addresses = split( "\n", $data );
+ foreach ( $addresses as $address )
+ {
+ if ( strlen( trim( $address ) ) > 1 && $address{0} !== '#' )
+ {
+ $this->assertEquals( false,
ezcMailTools::validateEmailAddress( $address ), "Failed asserting that
{$address} is incorrect." );
+ }
+ }
+ }
+
+ public function testValidateEmailAddressIncorrectMX()
+ {
+ $data = file_get_contents( dirname( __FILE__ ) .
'/tools/data/addresses_incorrect_mx.txt' );
+ $addresses = split( "\n", $data );
+ foreach ( $addresses as $address )
+ {
+ if ( strlen( trim( $address ) ) > 1 && $address{0} !== '#' )
+ {
+ $this->assertEquals( false,
ezcMailTools::validateEmailAddress( $address, true ), "Failed asserting that
{$address} is incorrect with MX." );
+ }
+ }
+ }
/**
* Tests if generateContentId works as it should.
--
svn-components mailing list
[email protected]
http://lists.ez.no/mailman/listinfo/svn-components