summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG1
-rw-r--r--program/steps/mail/func.inc4
-rw-r--r--tests/mailfunc.php16
-rw-r--r--tests/src/mailto.txt8
4 files changed, 27 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG
index ba2f0e9d3..634230707 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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&amp;body=this is the body"'
+ .' onclick="return rcmail.command(\'compose\',\'me@me.com?subject=this is the subject&amp;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