Index: includes/common.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/common.inc,v retrieving revision 1.752 diff -u -p -r1.752 common.inc --- includes/common.inc 16 Jan 2008 10:37:30 -0000 1.752 +++ includes/common.inc 25 Jan 2008 16:49:43 -0000 @@ -813,13 +813,18 @@ function t($string, $args = array(), $la * @return * TRUE if the address is in a valid format. */ -function valid_email_address($mail) { +function valid_email_address($mail, $allow_name = FALSE) { + $name = '((?:"[^\"\f\n\r\t\v]+" <))?'; + $angle = '(?(1)>)'; $user = '[a-zA-Z0-9_\-\.\+\^!#\$%&*+\/\=\?\`\|\{\}~\']+'; $domain = '(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.?)+'; $ipv4 = '[0-9]{1,3}(\.[0-9]{1,3}){3}'; $ipv6 = '[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7}'; - return preg_match("/^$user@($domain|(\[($ipv4|$ipv6)\]))$/", $mail); + $addrspec = "$user@($domain|(\[($ipv4|$ipv6)\]))"; + $mailbox = "$name$addrspec$angle"; + $expression = $allow_name ? $mailbox : $addrspec; + return preg_match('/^'. $expression .'$/', $mail); } /** Index: modules/system/system.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v retrieving revision 1.59 diff -u -p -r1.59 system.admin.inc --- modules/system/system.admin.inc 24 Jan 2008 10:59:29 -0000 1.59 +++ modules/system/system.admin.inc 25 Jan 2008 16:49:44 -0000 @@ -1182,7 +1182,7 @@ function system_site_information_setting */ function system_site_information_settings_validate($form, &$form_state) { // Validate the e-mail address. - if ($error = user_validate_mail($form_state['values']['site_mail'])) { + if ($error = user_validate_mail($form_state['values']['site_mail'], TRUE)) { form_set_error('site_mail', $error); } // Validate front page path. Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.889 diff -u -p -r1.889 user.module --- modules/user/user.module 22 Jan 2008 07:51:56 -0000 1.889 +++ modules/user/user.module 25 Jan 2008 16:49:44 -0000 @@ -393,9 +393,9 @@ function user_validate_name($name) { if (strlen($name) > USERNAME_MAX_LENGTH) return t('The username %name is too long: it must be %max characters or less.', array('%name' => $name, '%max' => USERNAME_MAX_LENGTH)); } -function user_validate_mail($mail) { +function user_validate_mail($mail, $allow_name = FALSE) { if (!$mail) return t('You must enter an e-mail address.'); - if (!valid_email_address($mail)) { + if (!valid_email_address($mail, $allow_name)) { return t('The e-mail address %mail is not valid.', array('%mail' => $mail)); } }