diff options
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | program/steps/mail/func.inc | 4 | ||||
-rw-r--r-- | tests/mailfunc.php | 16 | ||||
-rw-r--r-- | tests/src/mailto.txt | 8 |
4 files changed, 27 insertions, 2 deletions
@@ -1,6 +1,7 @@ CHANGELOG RoundCube Webmail =========================== +- Fix handling of extended mailto links (with params) (#1486354) - Fix sorting by date of messages without date header on servers without SORT (#1486286) - Fix inconsistency when not using default table names (#1486467) - Fix folder rename/delete buttons do not appear on creation of first folder (#1486468) diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 98653087f..e9adc1513 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -1148,12 +1148,12 @@ function rcmail_alter_html_link($matches) $attrib['href'] = "./bin/modcss.php?u=" . urlencode($attrib['href']) . "&c=" . urlencode($GLOBALS['rcmail_html_container_id']); $end = ' />'; } - else if (preg_match("/^mailto:$EMAIL_ADDRESS_PATTERN/i", $attrib['href'], $mailto)) { + else if (preg_match('/^mailto:'.$EMAIL_ADDRESS_PATTERN.'(\?[^"\'>]+)?/i', $attrib['href'], $mailto)) { $attrib['href'] = $mailto[0]; $attrib['onclick'] = sprintf( "return %s.command('compose','%s',this)", JS_OBJECT_NAME, - JQ($mailto[1])); + JQ($mailto[1].$mailto[2])); } else if (!empty($attrib['href']) && $attrib['href'][0] != '#') { $attrib['target'] = '_blank'; diff --git a/tests/mailfunc.php b/tests/mailfunc.php index 0e9363a0b..755cadc5e 100644 --- a/tests/mailfunc.php +++ b/tests/mailfunc.php @@ -114,6 +114,22 @@ class rcube_test_mailfunc extends UnitTestCase $this->assertPattern('#<a href="http://www.apple.com/legal/privacy/" target="_blank">http://www.apple.com/legal/privacy/</a>#', $html, "Links with target=_blank"); } + /** + * Test mailto links in html messages + */ + function test_mailto() + { + $part = $this->get_html_part('src/mailto.txt'); + + // render HTML in normal mode + $html = rcmail_html4inline(rcmail_print_body($part, array('safe' => false)), 'foo'); + + $mailto = '<a href="mailto:me@me.com?subject=this is the subject&body=this is the body"' + .' onclick="return rcmail.command(\'compose\',\'me@me.com?subject=this is the subject&body=this is the body\',this)">e-mail</a>'; + + $this->assertPattern('|'.preg_quote($mailto, '|').'|', $html, "Extended mailto links"); + } + } ?>
\ No newline at end of file diff --git a/tests/src/mailto.txt b/tests/src/mailto.txt new file mode 100644 index 000000000..e70b12de8 --- /dev/null +++ b/tests/src/mailto.txt @@ -0,0 +1,8 @@ +<html> +<head></head> +<body> + +<a href="mailto:me@me.com?subject=this is the subject&body=this is the body">e-mail</a> + +</body> +</html>
\ No newline at end of file |