summaryrefslogtreecommitdiff
path: root/program/steps/mail
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2014-06-13 15:05:12 +0200
committerAleksander Machniak <alec@alec.pl>2014-06-13 15:05:12 +0200
commit386e3ad424064ab7d3f32c34ba4148a8931df33d (patch)
tree70cd0d26335ecef5071376068ffbe7e679f5266b /program/steps/mail
parentabe381e3b0dc85fc0c9eb9fe788733a4ba157fd7 (diff)
Fix malformed recipient name when composing a message by clicking on mailto link (#1489942)
Diffstat (limited to 'program/steps/mail')
-rw-r--r--program/steps/mail/compose.inc16
1 files changed, 10 insertions, 6 deletions
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 0257f3187..d9a33bf78 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -280,6 +280,7 @@ $from_email = @mb_strtolower($MESSAGE->compose['from_email']);
foreach ($parts as $header) {
$fvalue = '';
$decode_header = true;
+ $charset = $MESSAGE->headers->charset;
// we have a set of recipients stored is session
if ($header == 'to' && ($mailto_id = $COMPOSE['param']['mailto'])
@@ -287,16 +288,19 @@ foreach ($parts as $header) {
) {
$fvalue = urldecode($_SESSION['mailto'][$mailto_id]);
$decode_header = false;
+ $charset = $RCMAIL->output->charset;
// make session to not grow up too much
unset($_SESSION['mailto'][$mailto_id]);
$COMPOSE['param']['to'] = $fvalue;
}
else if (!empty($_POST['_'.$header])) {
- $fvalue = rcube_utils::get_input_value('_'.$header, rcube_utils::INPUT_POST, TRUE);
+ $fvalue = rcube_utils::get_input_value('_'.$header, rcube_utils::INPUT_POST, TRUE);
+ $charset = $RCMAIL->output->charset;
}
else if (!empty($COMPOSE['param'][$header])) {
- $fvalue = $COMPOSE['param'][$header];
+ $fvalue = $COMPOSE['param'][$header];
+ $charset = $RCMAIL->output->charset;
}
else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
// get recipent address(es) out of the message headers
@@ -337,9 +341,9 @@ foreach ($parts as $header) {
// 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);
+ $from = rcube_mime::decode_address_list($v, null, false, $charset, true);
+ $to = rcube_mime::decode_address_list($MESSAGE->headers->to, null, false, $charset, true);
+ $replyto = rcube_mime::decode_address_list($MESSAGE->headers->replyto, null, false, $charset, true);
if (count($replyto) && !count(array_diff($to, $replyto)) && count(array_diff($from, $to))) {
$fvalue .= (!empty($fvalue) ? $separator : '') . $v;
@@ -365,7 +369,7 @@ foreach ($parts as $header) {
// split recipients and put them back together in a unique way
if (!empty($fvalue) && in_array($header, array('to', 'cc', 'bcc'))) {
- $to_addresses = rcube_mime::decode_address_list($fvalue, null, $decode_header, $MESSAGE->headers->charset);
+ $to_addresses = rcube_mime::decode_address_list($fvalue, null, $decode_header, $charset);
$fvalue = array();
foreach ($to_addresses as $addr_part) {