Fix Reply-To header handling in Reply-All action (#1489037)
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Fix Reply-To header handling in Reply-All action (#1489037) |
| | | - Fix so Sender: address is added to Cc: field on reply to all (#1489011) |
| | | - Fix so addressbook_search_mode works also for group search (#1489079) |
| | | - Fix removal of a contact from a group in LDAP addressbook (#1489081) |
| | |
| | | * @param int $max List only this number of addresses |
| | | * @param boolean $decode Decode address strings |
| | | * @param string $fallback Fallback charset if none specified |
| | | * @param boolean $addronly Return flat array with e-mail addresses only |
| | | * |
| | | * @return array Indexed list of addresses |
| | | */ |
| | | static function decode_address_list($input, $max = null, $decode = true, $fallback = null) |
| | | static function decode_address_list($input, $max = null, $decode = true, $fallback = null, $addronly = false) |
| | | { |
| | | $a = self::parse_address_list($input, $decode, $fallback); |
| | | $out = array(); |
| | |
| | | foreach ($a as $val) { |
| | | $j++; |
| | | $address = trim($val['address']); |
| | | $name = trim($val['name']); |
| | | |
| | | if ($addronly) { |
| | | $out[$j] = $address; |
| | | } |
| | | else { |
| | | $name = trim($val['name']); |
| | | if ($name && $address && $name != $address) |
| | | $string = sprintf('%s <%s>', preg_match("/$special_chars/", $name) ? '"'.addcslashes($name, '"').'"' : $name, $address); |
| | | else if ($address) |
| | |
| | | else if ($name) |
| | | $string = $name; |
| | | |
| | | $out[$j] = array( |
| | | 'name' => $name, |
| | | 'mailto' => $address, |
| | | 'string' => $string |
| | | ); |
| | | $out[$j] = array('name' => $name, 'mailto' => $address, 'string' => $string); |
| | | } |
| | | |
| | | if ($max && $j==$max) |
| | | break; |
| | |
| | | $fvalue .= (!empty($fvalue) ? $separator : '') . $v; |
| | | if ($v = $MESSAGE->headers->get('Sender', false)) |
| | | $fvalue .= (!empty($fvalue) ? $separator : '') . $v; |
| | | |
| | | // When To: and Reply-To: are the same we add From: address to the list (#1489037) |
| | | if ($v = $MESSAGE->headers->from) { |
| | | $from = rcube_mime::decode_address_list($v, null, false, $MESSAGE->headers->charset, true); |
| | | $to = rcube_mime::decode_address_list($MESSAGE->headers->to, null, false, $MESSAGE->headers->charset, true); |
| | | $replyto = rcube_mime::decode_address_list($MESSAGE->headers->replyto, null, false, $MESSAGE->headers->charset, true); |
| | | |
| | | if (count($replyto) && !count(array_diff($to, $replyto)) && count(array_diff($from, $to))) { |
| | | $fvalue .= (!empty($fvalue) ? $separator : '') . $v; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT))) { |