Fix address matching in Return-Path header on identity selection (#1489374)
Conflicts:
CHANGELOG
| | |
| | | CHANGELOG Roundcube Webmail |
| | | =========================== |
| | | |
| | | - Fix address matching in Return-Path header on identity selection (#1489374) |
| | | - Fix text wrapping issue with long unwrappable lines (#1489371) |
| | | - Fixed mispelling: occured -> occurred (#1489366) |
| | | - Fixed issues where HTML comments inside style tag would hang Internet Explorer |
| | |
| | | |
| | | // Try Return-Path |
| | | if ($from_idx === null && ($return_path = $MESSAGE->headers->others['return-path'])) { |
| | | $return_path = array_map('strtolower', (array) $return_path); |
| | | |
| | | foreach ($identities as $idx => $ident) { |
| | | // Return-Path header contains an email address, but on some mailing list |
| | | // it can be e.g. <pear-dev-return-55250-local=domain.tld@lists.php.net> |
| | | // where local@domain.tld is the address we're looking for (#1489241) |
| | | $ident1 = $ident['email_ascii']; |
| | | $ident1 = strtolower($ident['email_ascii']); |
| | | $ident2 = str_replace('@', '=', $ident1); |
| | | $ident1 = '<' . $ident1 . '>'; |
| | | $ident2 = '-' . $ident2 . '@'; |
| | | |
| | | foreach ((array)$return_path as $path) { |
| | | if (stripos($path, $ident1) !== false || stripos($path, $ident2)) { |
| | | foreach ($return_path as $path) { |
| | | if ($path == $ident1 || stripos($path, $ident2)) { |
| | | $from_idx = $idx; |
| | | break 2; |
| | | } |
| | |
| | | $this->assertRegExp('|src="cid:theCID"|', $html, "URI base resolving exception [1]"); |
| | | $this->assertRegExp('|src="http://other\.domain\.tld/img3\.gif"|', $html, "URI base resolving exception [2]"); |
| | | } |
| | | |
| | | /** |
| | | * Test identities selection using Return-Path header |
| | | */ |
| | | function test_rcmail_identity_select() |
| | | { |
| | | $identities = array( |
| | | array( |
| | | 'name' => 'Test', |
| | | 'email_ascii' => 'addr@domain.tld', |
| | | 'ident' => 'Test <addr@domain.tld>', |
| | | ), |
| | | array( |
| | | 'name' => 'Test', |
| | | 'email_ascii' => 'thing@domain.tld', |
| | | 'ident' => 'Test <thing@domain.tld>', |
| | | ), |
| | | array( |
| | | 'name' => 'Test', |
| | | 'email_ascii' => 'other@domain.tld', |
| | | 'ident' => 'Test <other@domain.tld>', |
| | | ), |
| | | ); |
| | | |
| | | $message = new stdClass; |
| | | $message->headers = new rcube_message_header; |
| | | $message->headers->set('Return-Path', '<some_thing@domain.tld>'); |
| | | $res = rcmail_identity_select($message, $identities); |
| | | |
| | | $this->assertSame($identities[0], $res); |
| | | |
| | | $message->headers->set('Return-Path', '<thing@domain.tld>'); |
| | | $res = rcmail_identity_select($message, $identities); |
| | | |
| | | $this->assertSame($identities[1], $res); |
| | | } |
| | | } |