alecpl
2010-03-12 b579f42b550a5c3f3bf11a0cee13149d67c1bcd8
- fixes for proper handling of email addresses with form: "user"@domain.tld


3 files modified
18 ■■■■■ changed files
program/include/rcube_imap.php 10 ●●●● patch | view | raw | blame | history
program/include/rcube_smtp.php 6 ●●●●● patch | view | raw | blame | history
program/steps/mail/func.inc 2 ●●● patch | view | raw | blame | history
program/include/rcube_imap.php
@@ -2675,8 +2675,12 @@
    foreach ($a as $val)
      {
      $j++;
      $address = $val['address'];
      $name = preg_replace(array('/^[\'"]/', '/[\'"]$/'), '', trim($val['name']));
      $address = trim($val['address']);
      $name = trim($val['name']);
      if (preg_match('/^[\'"]/', $name) && preg_match('/[\'"]$/', $name))
        $name = preg_replace(array('/^[\'"]/', '/[\'"]$/'), '', $name);
      if ($name && $address && $name != $address)
        $string = sprintf('%s <%s>', preg_match("/$special_chars/", $name) ? '"'.addcslashes($name, '"').'"' : $name, $address);
      else if ($address)
@@ -2687,7 +2691,7 @@
      $out[$j] = array('name' => $name,
                       'mailto' => $address,
                       'string' => $string);
      if ($max && $j==$max)
        break;
      }
program/include/rcube_smtp.php
@@ -392,14 +392,14 @@
    
    $addresses = array();
    $recipients = rcube_explode_quoted_string(',', $recipients);
    reset($recipients);
    while (list($k, $recipient) = each($recipients))
    {
      $a = explode(" ", $recipient);
      while (list($k2, $word) = each($a))
      {
        if ((strpos($word, "@") > 0) && (strpos($word, "\"")===false))
        if (strpos($word, "@") > 0 && $word[strlen($word)-1] != '"')
        {
          $word = preg_replace('/^<|>$/', '', trim($word));
          if (in_array($word, $addresses)===false)
@@ -411,5 +411,3 @@
  }
}
?>
program/steps/mail/func.inc
@@ -1191,7 +1191,7 @@
  if ($got_writable_abook === null && $books = $RCMAIL->get_address_sources(true)) {
    $got_writable_abook = true;
  }
  foreach ($a_parts as $part) {
    $j++;
    if ($PRINT_MODE) {