diff options
author | alecpl <alec@alec.pl> | 2011-10-26 13:53:30 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2011-10-26 13:53:30 +0000 |
commit | b5a29fe22fccdd9b89914c4215655388995facd3 (patch) | |
tree | 5868af5758a317cf655a12363c5266e4a74f2416 /program/steps | |
parent | ea66cef9bc7e1b3667893a267a9eaea357417f28 (diff) |
- Fix IDN address validation issue (#1488137)
Diffstat (limited to 'program/steps')
-rw-r--r-- | program/steps/mail/sendmail.inc | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index deddb45e8..5022444a7 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -159,14 +159,14 @@ function rcmail_email_input_format($mailto, $count=false, $check=true) $item = trim($item); // address in brackets without name (do nothing) if (preg_match('/^<'.$email_regexp.'>$/', $item)) { - $item = rcube_idn_to_ascii($item); - $result[] = $item; + $item = rcube_idn_to_ascii(trim($item, '<>')); + $result[] = '<' . $item . '>'; // address without brackets and without name (add brackets) } else if (preg_match('/^'.$email_regexp.'$/', $item)) { $item = rcube_idn_to_ascii($item); - $result[] = '<'.$item.'>'; + $result[] = '<' . $item . '>'; // address with name (handle name) - } else if (preg_match('/'.$email_regexp.'>*$/', $item, $matches)) { + } else if (preg_match('/<*'.$email_regexp.'>*$/', $item, $matches)) { $address = $matches[0]; $name = str_replace($address, '', $item); $name = trim($name); @@ -174,9 +174,8 @@ function rcmail_email_input_format($mailto, $count=false, $check=true) && preg_match('/[\(\)\<\>\\\.\[\]@,;:"]/', $name)) { $name = '"'.addcslashes($name, '"').'"'; } - $address = rcube_idn_to_ascii($address); - if (!preg_match('/^<'.$email_regexp.'>$/', $address)) - $address = '<'.$address.'>'; + $address = rcube_idn_to_ascii(trim($address, '<>')); + $address = '<' . $address . '>'; $result[] = $name.' '.$address; $item = $address; |