- Improved Mail-Reply-To and Mail-Followup-To headers handling
| | |
| | | - Add confirmation message on purge/expunge command response |
| | | - Fix handling of untagged responses for AUTHENTICATE command (#1487450) |
| | | - Add username and IP address to log message on unsuccessful login (#1487626) |
| | | - Improved Mail-Followup-To and Mail-Reply-To headers handling |
| | | |
| | | RELEASE 0.5-BETA |
| | | ---------------- |
| | |
| | | input_subject = $("input[name='_subject']"), |
| | | input_message = $("[name='_message']").get(0), |
| | | html_mode = $("input[name='_is_html']").val() == '1', |
| | | ac_fields = ['cc', 'bcc', 'replyto', 'mailreplyto', 'mailfollowupto']; |
| | | ac_fields = ['cc', 'bcc', 'replyto', 'followupto']; |
| | | |
| | | // init live search events |
| | | this.init_address_input_events(input_to); |
| | |
| | | $labels['cc'] = 'Copy'; |
| | | $labels['bcc'] = 'Bcc'; |
| | | $labels['replyto'] = 'Reply-To'; |
| | | $labels['mailreplyto'] = 'Mail-Reply-To'; |
| | | $labels['mailfollowupto'] = 'Mail-Followup-To'; |
| | | $labels['followupto'] = 'Followup-To'; |
| | | $labels['date'] = 'Date'; |
| | | $labels['size'] = 'Size'; |
| | | $labels['priority'] = 'Priority'; |
| | | $labels['organization'] = 'Organisation'; |
| | | $labels['readstatus'] = 'Read status'; |
| | | $labels['reply-to'] = $labels['replyto']; |
| | | $labels['mail-reply-to'] = $labels['mailreplyto']; |
| | | $labels['mail-followup-to'] = $labels['mailfollowupto']; |
| | | $labels['mailboxlist'] = 'Folders'; |
| | | $labels['messagesfromto'] = 'Messages $from to $to of $count'; |
| | | $labels['threadsfromto'] = 'Threads $from to $to of $count'; |
| | |
| | | $labels['addcc'] = 'Add Cc'; |
| | | $labels['addbcc'] = 'Add Bcc'; |
| | | $labels['addreplyto'] = 'Add Reply-To'; |
| | | $labels['addmailreplyto'] = 'Add Mail-Reply-To'; |
| | | $labels['addmailfollowupto'] = 'Add Mail-Followup-To'; |
| | | $labels['addfollowupto'] = 'Add Followup-To'; |
| | | $labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?'; |
| | | $labels['receiptread'] = 'Return Receipt (read)'; |
| | | $labels['yourmessage'] = 'This is a Return Receipt for your message'; |
| | |
| | | $labels['cc'] = 'Copy'; |
| | | $labels['bcc'] = 'Bcc'; |
| | | $labels['replyto'] = 'Reply-To'; |
| | | $labels['mailreplyto'] = 'Mail-Reply-To'; |
| | | $labels['mailfollowupto'] = 'Mail-Followup-To'; |
| | | $labels['followupto'] = 'Followup-To'; |
| | | $labels['date'] = 'Date'; |
| | | $labels['size'] = 'Size'; |
| | | $labels['priority'] = 'Priority'; |
| | | $labels['organization'] = 'Organization'; |
| | | $labels['readstatus'] = 'Read status'; |
| | | |
| | | // aliases |
| | | $labels['reply-to'] = $labels['replyto']; |
| | | $labels['mail-reply-to'] = $labels['mailreplyto']; |
| | | $labels['mail-followup-to'] = $labels['mailfollowupto']; |
| | | |
| | | $labels['mailboxlist'] = 'Folders'; |
| | | $labels['messagesfromto'] = 'Messages $from to $to of $count'; |
| | |
| | | $labels['addcc'] = 'Add Cc'; |
| | | $labels['addbcc'] = 'Add Bcc'; |
| | | $labels['addreplyto'] = 'Add Reply-To'; |
| | | $labels['addmailreplyto'] = 'Add Mail-Reply-To'; |
| | | $labels['addmailfollowupto'] = 'Add Mail-Followup-To'; |
| | | $labels['addfollowupto'] = 'Add Followup-To'; |
| | | |
| | | // mdn |
| | | $labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?'; |
| | |
| | | $labels['to'] = 'Odbiorca'; |
| | | $labels['cc'] = 'Kopia'; |
| | | $labels['bcc'] = 'Ukryta kopia'; |
| | | $labels['replyto'] = 'Odp. do'; |
| | | $labels['replyto'] = 'Odpowiedź do'; |
| | | $labels['date'] = 'Data'; |
| | | $labels['size'] = 'Rozmiar'; |
| | | $labels['readstatus'] = 'Przeczytano'; |
| | | $labels['priority'] = 'Priorytet'; |
| | | $labels['organization'] = 'Organizacja'; |
| | | $labels['reply-to'] = 'Odpowiedz do'; |
| | | $labels['mailboxlist'] = 'Foldery'; |
| | | $labels['messagesfromto'] = 'Wiadomości od $from do $to z $count'; |
| | | $labels['threadsfromto'] = 'Wątki od $from do $to z $count'; |
| | |
| | | $labels['folderactions'] = 'Działania na folderach...'; |
| | | $labels['contacts'] = 'Kontakty'; |
| | | $labels['messageoptions'] = 'Opcje wiadomości...'; |
| | | $labels['mailreplyto'] = 'Mail-Reply-To'; |
| | | $labels['mailfollowupto'] = 'Mail-Followup-To'; |
| | | $labels['mail-reply-to'] = 'Mail-Reply-To'; |
| | | $labels['mail-followup-to'] = 'Mail-Followup-To'; |
| | | $labels['followupto'] = 'Kontynuacja do'; |
| | | $labels['replyall'] = 'Odpowiedz wszystkim'; |
| | | $labels['replylist'] = 'Odpowiedz na listę'; |
| | | $labels['editidents'] = 'Edytuj tożsamości'; |
| | | $labels['addmailreplyto'] = 'Dodaj Mail-Reply-To'; |
| | | $labels['addmailfollowupto'] = 'Dodaj Mail-Followup-To'; |
| | | $labels['addfollowupto'] = 'Dodaj Followup-To'; |
| | | $labels['dsn'] = 'Status dostarczenia (DSN)'; |
| | | $labels['reqdsn'] = 'Zawsze żądaj statusu dostarczenia (DSN)'; |
| | | $labels['replysamefolder'] = 'Umieszczaj odpowiedzi w folderze wiadomości, na którą odpowiadam'; |
| | |
| | | $param = 'replyto'; |
| | | $header = 'reply-to'; |
| | | |
| | | case 'mailreplyto': |
| | | case 'mail-reply-to': |
| | | case 'followupto': |
| | | case 'followup-to': |
| | | if (!$fname) { |
| | | $fname = '_mailreplyto'; |
| | | $param = 'mailreplyto'; |
| | | $header = 'mail-reply-to'; |
| | | } |
| | | |
| | | case 'mailfollowupto': |
| | | case 'mail-followup-to': |
| | | if (!$fname) { |
| | | $fname = '_mailfollowupto'; |
| | | $param = 'mailfollowupto'; |
| | | $fname = '_followupto'; |
| | | $param = 'followupto'; |
| | | $header = 'mail-followup-to'; |
| | | } |
| | | |
| | |
| | | $fvalue = $MESSAGE->get_header('cc'); |
| | | else if ($header=='bcc' && !empty($MESSAGE->headers->bcc)) |
| | | $fvalue = $MESSAGE->get_header('bcc'); |
| | | else if ($header=='reply-to' && !empty($MESSAGE->headers->others['mail-reply-to'])) |
| | | $fvalue = $MESSAGE->get_header('mail-reply-to'); |
| | | else if ($header=='reply-to' && !empty($MESSAGE->headers->replyto)) |
| | | $fvalue = $MESSAGE->get_header('reply-to'); |
| | | else if ($header=='mail-reply-to' && !empty($MESSAGE->headers->others['mail-reply-to'])) |
| | | $fvalue = $MESSAGE->get_header('followup-to'); |
| | | else if ($header=='mail-followup-to' && !empty($MESSAGE->headers->others['mail-followup-to'])) |
| | | $fvalue = $MESSAGE->get_header('mail-followup-to'); |
| | | |
| | |
| | | else |
| | | $header_value = trim($IMAP->decode_header($value)); |
| | | |
| | | $output_headers[$hkey] = array('title' => rcube_label($hkey), 'value' => $header_value, 'raw' => $value); |
| | | $output_headers[$hkey] = array( |
| | | 'title' => rcube_label(preg_replace('/(^mail-|-)/', '', $hkey)), |
| | | 'value' => $header_value, 'raw' => $value |
| | | ); |
| | | } |
| | | |
| | | $plugin = $RCMAIL->plugins->exec_hook('message_headers_output', array('output' => $output_headers, 'headers' => $MESSAGE->headers)); |
| | | $plugin = $RCMAIL->plugins->exec_hook('message_headers_output', |
| | | array('output' => $output_headers, 'headers' => $MESSAGE->headers)); |
| | | |
| | | // compose html table |
| | | $table = new html_table(array('cols' => 2)); |
| | |
| | | if (!empty($identity_arr['organization'])) |
| | | $headers['Organization'] = $identity_arr['organization']; |
| | | |
| | | if (!empty($_POST['_replyto'])) |
| | | $headers['Reply-To'] = rcmail_email_input_format(get_input_value('_replyto', RCUBE_INPUT_POST, TRUE, $message_charset)); |
| | | if (!empty($_POST['_replyto'])) { |
| | | $reply_to = rcmail_email_input_format(get_input_value('_replyto', RCUBE_INPUT_POST, TRUE, $message_charset)); |
| | | $headers['Reply-To'] = $reply_to; |
| | | $headers['Mail-Reply-To'] = $reply_to; |
| | | } |
| | | else if (!empty($identity_arr['reply-to'])) |
| | | $headers['Reply-To'] = rcmail_email_input_format($identity_arr['reply-to'], false, true); |
| | | |
| | | if (!empty($_POST['_mailfollowupto'])) |
| | | $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_mailfollowupto', RCUBE_INPUT_POST, TRUE, $message_charset)); |
| | | if (!empty($_POST['_mailreplyto'])) |
| | | $headers['Mail-Reply-To'] = rcmail_email_input_format(get_input_value('_mailreplyto', RCUBE_INPUT_POST, TRUE, $message_charset)); |
| | | if (!empty($_POST['_followupto'])) |
| | | $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_followupto', RCUBE_INPUT_POST, TRUE, $message_charset)); |
| | | |
| | | if (!empty($_SESSION['compose']['reply_msgid'])) |
| | | $headers['In-Reply-To'] = $_SESSION['compose']['reply_msgid']; |
| | |
| | | foreach ($fieldset['content'] as $col => $colprop) { |
| | | $colprop['id'] = 'rcmfd_'.$col; |
| | | |
| | | $label = !empty($colprop['label']) ? $colprop['label'] : rcube_label($col); |
| | | $label = !empty($colprop['label']) ? $colprop['label'] : |
| | | rcube_label(str_replace('-', '', $col)); |
| | | $value = !empty($colprop['value']) ? $colprop['value'] : |
| | | rcmail_get_edit_field($col, $IDENTITY_RECORD[$col], $colprop, $colprop['type']); |
| | | |
| | |
| | | /* Message composing */ |
| | | init_compose_form: function() |
| | | { |
| | | var f, field, fields = ['cc', 'bcc', 'replyto', 'mailreplyto', 'mailfollowupto'], |
| | | var f, field, fields = ['cc', 'bcc', 'replyto', 'followupto'], |
| | | div = document.getElementById('compose-div'), |
| | | headers_div = document.getElementById('compose-headers-div'); |
| | | |
| | |
| | | #compose-cc, |
| | | #compose-bcc, |
| | | #compose-replyto, |
| | | #compose-mailreplyto, |
| | | #compose-mailfollowupto |
| | | #compose-followupto |
| | | { |
| | | display: none; |
| | | } |
| | |
| | | <label for="_replyto"><roundcube:label name="replyto" /></label> |
| | | </td> |
| | | <td class="editfield"><roundcube:object name="composeHeaders" part="replyto" form="form" id="_replyto" size="70" tabindex="5" /></td> |
| | | </tr><tr id="compose-mailreplyto"> |
| | | </tr><tr id="compose-followupto"> |
| | | <td class="title top"> |
| | | <a href="#mailreplyto" onclick="return rcmail_ui.hide_header_form('mailreplyto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a> |
| | | <label for="_mailreplyto"><roundcube:label name="mailreplyto" /></label> |
| | | <a href="#followupto" onclick="return rcmail_ui.hide_header_form('followupto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a> |
| | | <label for="_followupto"><roundcube:label name="followupto" /></label> |
| | | </td> |
| | | <td class="editfield"><roundcube:object name="composeHeaders" part="mailreplyto" form="form" id="_mailreplyto" size="70" tabindex="6" /></td> |
| | | </tr><tr id="compose-mailfollowupto"> |
| | | <td class="title top"> |
| | | <a href="#mailfollowupto" onclick="return rcmail_ui.hide_header_form('mailfollowupto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a> |
| | | <label for="_mailfollowupto"><roundcube:label name="mailfollowupto" /></label> |
| | | </td> |
| | | <td class="editfield"><roundcube:object name="composeHeaders" part="mailfollowupto" form="form" id="_mailfollowupto" size="70" tabindex="7" /></td> |
| | | <td class="editfield"><roundcube:object name="composeHeaders" part="followupto" form="form" id="_followupto" size="70" tabindex="7" /></td> |
| | | </tr><tr> |
| | | <td></td> |
| | | <td class="formlinks"> |
| | |
| | | <span class="separator">|</span> |
| | | <a href="#reply-to" onclick="return rcmail_ui.show_header_form('replyto')" id="replyto-link"><roundcube:label name="addreplyto" /></a> |
| | | <span class="separator">|</span> |
| | | <a href="#mailreply-to" onclick="return rcmail_ui.show_header_form('mailreplyto')" id="mailreplyto-link"><roundcube:label name="addmailreplyto" /></a> |
| | | <span class="separator">|</span> |
| | | <a href="#mailfollowup-to" onclick="return rcmail_ui.show_header_form('mailfollowupto')" id="mailfollowupto-link"><roundcube:label name="addmailfollowupto" /></a> |
| | | <a href="#followup-to" onclick="return rcmail_ui.show_header_form('followupto')" id="followupto-link"><roundcube:label name="addfollowupto" /></a> |
| | | </td> |
| | | </tr><tr> |
| | | <td class="title"><label for="compose-subject"><roundcube:label name="subject" /></label></td> |