function replyAllString($header) {
global $include_self_reply_all, $username, $data_dir;
- $excl_arr = array();
+ $excl_ar = array();
/**
* 1) Remove the addresses we'll be sending the message 'to'
*/
if (!$include_self_reply_all) {
$email_address = trim(getPref($data_dir, $username, 'email_address'));
$excl_ar[$email_address] = '';
-
$idents = getPref($data_dir, $username, 'identities');
if ($idents != '' && $idents > 1) {
+ $first_id = false;
for ($i = 1; $i < $idents; $i ++) {
$cur_email_address = getPref($data_dir, $username,
'email_address' . $i);
$cur_email_address = strtolower($cur_email_address);
- $excl_ar[$cur_email_address] = '';
+ $excl_ar[$cur_email_address] = '';
}
}
}
$url_replytoallcc = '';
foreach( $url_replytoall_ar as $email => $personal) {
if ($personal) {
- $url_replytoallcc .= ", \"$personal\" <$email>";
+ $url_replytoallcc .= ", \"$personal\" <$email>";
} else {
- $url_replytoallcc .= ', '. $email;
+ $url_replytoallcc .= ', '. $email;
}
}
$url_replytoallcc = substr($url_replytoallcc,2);
}
/* ----------------------------------------------------------------------- */
-/* OLD: should be adapted to composeMessage */
-
/*
* If the session is expired during a post this restores the compose session
* vars.
*/
-//$session_expired = false;
-sqsession_unregister('session_expired_post');
-if (false && sqsession_is_registered('session_expired_post')) {
- global $session_expired_post, $session_expired;
+if (sqsession_is_registered('session_expired_post')) {
+ $session_expired_post = $_SESSION['session_expired_post'];
/*
* extra check for username so we don't display previous post data from
* another user during this session.
*/
if ($session_expired_post['username'] != $username) {
+ unset($session_expired_post);
sqsession_unregister('session_expired_post');
- sqsession_unregister('session_expired');
+ session_write_close();
} else {
foreach ($session_expired_post as $postvar => $val) {
if (isset($val)) {
$$postvar = '';
}
}
+ $compose_messages = unserialize(urldecode($restoremessages));
+ sqsession_register($compose_messages,'compose_messages');
+ sqsession_register($composesession,'composesession');
if (isset($send)) {
unset($send);
}
$session_expired = true;
}
+ unset($session_expired_post);
sqsession_unregister('session_expired_post');
- sqsession_unregister('session_expired');
+ session_write_close();
if (!isset($mailbox)) {
$mailbox = '';
}
$composesession = $session;
sqsession_register($composesession,'composesession');
}
-
if (!isset($compose_messages)) {
$compose_messages = array();
}
*/
set_my_charset();
$composeMessage=$compose_messages[$session];
- if (! sendMessage($composeMessage, true)) {
+ if (! deliverMessage($composeMessage, true)) {
showInputForm($session);
exit();
} else {
+ unset($compose_messages[$session]);
$draft_message = _("Draft Email Saved");
/* If this is a resumed draft, then delete the original */
if(isset($delete_draft)) {
do_hook('compose_send');
$composeMessage=$compose_messages[$session];
- $Result = sendMessage($composeMessage);
+ $Result = deliverMessage($composeMessage);
if (! $Result) {
showInputForm($session);
exit();
}
+ unset($compose_messages[$session]);
if ( isset($delete_draft)) {
Header("Location: delete_message.php?mailbox=" . urlencode( $draft_folder ).
"&message=$delete_draft&sort=$sort&startMessage=1&mail_sent=yes");
exit();
}
if ($compose_new_win == '1') {
+
Header("Location: compose.php?mail_sent=yes");
}
else {
$composeMessage->entities = $new_entities;
$compose_messages[$session] = $composeMessage;
sqsession_register($compose_messages, 'compose_messages');
-// setPref($data_dir, $username, 'attachments', serialize($attachments));
}
showInputForm($session);
} else {
} else {
$orig_from = '';
}
+ $identities = array();
if (!empty($idents) && $idents > 1) {
- for ($i = 1; $i < $idents; $i++) {
- $enc_from_name = '"'.
- getPref($data_dir,
- $username,
- 'full_name' . $i) .
- '" <' . getPref($data_dir, $username,
- 'email_address' . $i) . '>';
- if ($enc_from_name == $orig_from) {
+ $identities[] = '"'. getPref($data_dir, $username, 'full_name')
+ . '" <' . getPref($data_dir, $username, 'email_address') . '>';
+ for ($i = 1; $i < $idents; $i++) {
+ $enc_from_name = '"'.
+ getPref($data_dir, $username, 'full_name' . $i) .
+ '" <' .
+ getPref($data_dir, $username, 'email_address' . $i) . '>';
+ if ($enc_from_name == $orig_from && $i) {
$identity = $i;
break;
}
+ $identities[] = $enc_from_name;
}
+ $identity_match = $orig_header->findAddress($identities);
+ if ($identity_match) {
+ $identity = $identity_match;
+ }
}
switch ($action) {
}
/* this corrects some wrapping/quoting problems on replies */
$rewrap_body = explode("\n", $body);
-
- $from = (is_array($orig_header->from)) ?
- $orig_header->from[0] : $orig_header->from;
+ $from = (is_array($orig_header->from)) ?
+ $orig_header->from[0] : $orig_header->from;
$body = getReplyCitation($from->getAddress(false));
-
+ sqUnWordWrap($body);
$cnt = count($rewrap_body);
for ($i=0;$i<$cnt;$i++) {
-// sqWordWrap($rewrap_body[$i], ($editor_size - 2));
+ sqWordWrap($rewrap_body[$i], ($editor_size));
if (preg_match("/^(>+)/", $rewrap_body[$i], $matches)) {
$gt = $matches[1];
- $body .= '>' . str_replace("\n", "\n$gt ", $rewrap_body[$i]) ."\n";
+ $body .= '>' . str_replace("\n", "\n>$gt ", rtrim($rewrap_body[$i])) ."\n";
} else {
- $body .= '> ' . $rewrap_body[$i] . "\n";
+ $body .= '> ' . str_replace("\n", "\n> ", rtrim($rewrap_body[$i])) . "\n";
}
unset($rewrap_body[$i]);
}
}
$compose_messages[$session] = $composeMessage;
sqsession_register($compose_messages, 'compose_messages');
-
+ session_write_close();
sqimap_logout($imapConnection);
}
$ret = array( 'send_to' => $send_to,
$username, $data_dir, $identity, $draft_id, $delete_draft,
$mailprio, $default_use_mdn, $mdn_user_support, $compose_new_win,
$saved_draft, $mail_sent, $sig_first, $edit_as_new, $action,
- $username, $compose_messages;
+ $username, $compose_messages, $composesession;
$composeMessage = $compose_messages[$session];
if ($idents > 1) {
echo ' <TR>' . "\n" .
' <TD BGCOLOR="' . $color[4] . '" WIDTH="10%" ALIGN=RIGHT>' .
- "\n" .
- _("From:") .
- ' </TD><TD BGCOLOR="' . $color[4] . '" WIDTH="90%">' . "\n" .
- '<select name=identity>' . "\n" .
- '<option value=default>' .
- htmlspecialchars(getPref($data_dir, $username, 'full_name'));
+ _("From:") . '</TD>' . "\n" .
+ ' <TD BGCOLOR="' . $color[4] . '" WIDTH="90%">' . "\n" .
+ ' <select name=identity>' . "\n" .
+ ' <option value=default>' .
+ htmlspecialchars(getPref($data_dir, $username, 'full_name'));
$em = getPref($data_dir, $username, 'email_address');
if ($em != '') {
echo htmlspecialchars(' <' . $em . '>') . "\n";
' </TR>' . "\n";
}
echo ' <TR>' . "\n" .
- ' <TD BGCOLOR="' . $color[4] . '" WIDTH="10%" ALIGN=RIGHT>' . "\n" .
- _("To:") .
- ' </TD><TD BGCOLOR="' . $color[4] . '" WIDTH="90%">' . "\n" .
+ ' <TD BGCOLOR="' . $color[4] . '" WIDTH="10%" ALIGN=RIGHT>' .
+ _("To:") . '</TD>' . "\n" .
+ ' <TD BGCOLOR="' . $color[4] . '" WIDTH="90%">' . "\n" .
' <INPUT TYPE=text NAME="send_to" VALUE="' .
- htmlspecialchars($send_to) . '" SIZE=60><BR>' . "\n" .
+ htmlspecialchars($send_to) . '" SIZE=60><BR>' . "\n" .
' </TD>' . "\n" .
' </TR>' . "\n" .
' <TR>' . "\n" .
- ' <TD BGCOLOR="' . $color[4] . '" ALIGN=RIGHT>' . "\n" .
- _("CC:") .
- ' </TD><TD BGCOLOR="' . $color[4] . '" ALIGN=LEFT>' . "\n" .
+ ' <TD BGCOLOR="' . $color[4] . '" ALIGN=RIGHT>' .
+ _("CC:") . '</TD>' . "\n" .
+ ' <TD BGCOLOR="' . $color[4] . '" ALIGN=LEFT>' . "\n" .
' <INPUT TYPE=text NAME="send_to_cc" SIZE=60 VALUE="' .
- htmlspecialchars($send_to_cc) . '"><BR>' . "\n" .
+ htmlspecialchars($send_to_cc) . '"><BR>' . "\n" .
' </TD>' . "\n" .
' </TR>' . "\n" .
' <TR>' . "\n" .
- ' <TD BGCOLOR="' . $color[4] . '" ALIGN=RIGHT>' . "\n" .
- _("BCC:") .
- ' </TD><TD BGCOLOR="' . $color[4] . '" ALIGN=LEFT>' . "\n" .
+ ' <TD BGCOLOR="' . $color[4] . '" ALIGN=RIGHT>' .
+ _("BCC:") . '</TD>' . "\n" .
+ ' <TD BGCOLOR="' . $color[4] . '" ALIGN=LEFT>' . "\n" .
' <INPUT TYPE=text NAME="send_to_bcc" VALUE="' .
- htmlspecialchars($send_to_bcc) . '" SIZE=60><BR>' . "\n" .
- '</TD></TR>' . "\n" .
+ htmlspecialchars($send_to_bcc) . '" SIZE=60><BR>' . "\n" .
+ ' </TD>' . "\n" .
+ ' </TR>' . "\n" .
' <TR>' . "\n" .
- ' <TD BGCOLOR="' . $color[4] . '" ALIGN=RIGHT>' . "\n" .
- _("Subject:") .
- ' </TD><TD BGCOLOR="' . $color[4] . '" ALIGN=LEFT>' . "\n";
- echo ' <INPUT TYPE=text NAME=subject SIZE=60 VALUE="' .
- htmlspecialchars($subject) . '">';
- echo '</td></tr>' . "\n\n";
+ ' <TD BGCOLOR="' . $color[4] . '" ALIGN=RIGHT>' .
+ _("Subject:") . '</TD>' . "\n" .
+ ' <TD BGCOLOR="' . $color[4] . '" ALIGN=LEFT>' . "\n";
+ echo ' <INPUT TYPE=text NAME=subject SIZE=60 VALUE="' .
+ htmlspecialchars($subject) . '">' . "\n" .
+ ' </TD>' . "\n" .
+ ' </TR>' . "\n\n";
if ($location_of_buttons == 'between') {
showComposeButtonRow();
echo ' <TR>' . "\n" .
' <TD BGCOLOR="' . $color[0] . '" COLSPAN=2 ALIGN=CENTER>' . "\n" .
' <TEXTAREA NAME=body ROWS=20 COLS="' .
- $editor_size . '" WRAP="VIRTUAL">';
+ $editor_size . '" WRAP="VIRTUAL">';
}
else {
echo ' <TR>' . "\n" .
' <TD BGCOLOR="' . $color[4] . '" COLSPAN=2>' . "\n" .
' <TEXTAREA NAME=body ROWS=20 COLS="' .
- $editor_size . '" WRAP="VIRTUAL">';
+ $editor_size . '" WRAP="VIRTUAL">';
}
if ($use_signature == true && $newmail == true && !isset($from_htmladdr_search)) {
if ($sig_first == '1') {
if ($location_of_buttons == 'bottom') {
showComposeButtonRow();
} else {
- echo ' <TR><TD COLSPAN=2 ALIGN=RIGHT>' .
- ' <INPUT TYPE=SUBMIT NAME=send VALUE="' . _("Send") . '">' .
- ' <BR><BR>' .
- ' </TD></TR>' . "\n";
+ echo ' <TR>' . "\n" .
+ ' <TD COLSPAN=2 ALIGN=RIGHT>' . "\n" .
+ ' <INPUT TYPE=SUBMIT NAME=send VALUE="' . _("Send") . '">' . "\n" .
+ ' <BR><BR>' . "\n" .
+ ' </TD>' . "\n" .
+ ' </TR>' . "\n";
}
/* This code is for attachments */
- echo '<table width="100%" cellpadding="0" cellspacing="4" align="center" border="0">' .
- ' <tr><td>' .
- ' <table width="100%" cellpadding="1" cellspacing="0" align="center"'.' border="0" bgcolor="'.$color[9].'">' .
- ' <tr><td>' .
- ' <table width="100%" cellpadding="3" cellspacing="0" align="center" border="0">' .
- ' <TR>' . "\n" .
- ' <TD VALIGN=MIDDLE ALIGN=RIGHT>' . "\n" .
- _("Attach:") .
- ' </TD>' . "\n" .
- ' <TD VALIGN=MIDDLE ALIGN=LEFT>' . "\n" .
- ' <INPUT NAME="attachfile" SIZE=48 TYPE="file">' . "\n" .
- ' <input type="submit" name="attach"' .
- ' value="' . _("Add") .'">' . "\n" .
- ' </TD>' . "\n" .
- ' </TR>' . "\n";
+ echo ' <TR>' . "\n" .
+ ' <TD COLSPAN=2>' . "\n" .
+ ' <table width="100%" cellpadding="1" cellspacing="0" align="center"'.
+ ' border="0" bgcolor="'.$color[9].'">' . "\n" .
+ ' <TR>' . "\n" .
+ ' <TD>' . "\n" .
+ ' <table width="100%" cellpadding="3" cellspacing="0" align="center"'.
+ ' border="0">' . "\n" .
+ ' <TR>' . "\n" .
+ ' <TD VALIGN=MIDDLE ALIGN=RIGHT>' .
+ _("Attach:") . '</TD>' . "\n" .
+ ' <TD VALIGN=MIDDLE ALIGN=LEFT>' . "\n" .
+ ' <INPUT NAME="attachfile" SIZE=48 TYPE="file">' . "\n" .
+ ' <input type="submit" name="attach"' .
+ ' value="' . _("Add") .'">' . "\n" .
+ ' </TD>' . "\n" .
+ ' </TR>' . "\n";
$s_a = array();
_("Delete selected attachments") . "\">\n" .
'</td></tr>';
}
- echo ' </table></td></tr>' .
- ' </table>' .
- ' </td></tr>';
+ echo ' </table>' . "\n" .
+ ' </td>' . "\n" .
+ ' </tr>' . "\n" .
+ ' </TABLE>' . "\n" .
+ ' </TD>' . "\n" .
+ ' </TR>' . "\n";
/* End of attachment code */
if ($compose_new_win == '1') {
}
echo '</TABLE>' . "\n" .
'<input type="hidden" name="username" value="'. $username . "\">\n" .
- '<input type=hidden name=action value=' . $action . ">\n" .
+ '<input type=hidden name=action value="' . $action . "\">\n" .
'<INPUT TYPE=hidden NAME=mailbox VALUE="' . htmlspecialchars($mailbox) .
"\">\n";
+ /*
+ store the complete ComposeMessages array in a hidden input value
+ so we can restore them in case of a session timeout.
+ */
+ echo '<input type=hidden name=restoremessages value="' . urlencode(serialize($compose_messages)) . "\">\n";
+ echo '<input type=hidden name=composesession value="' . $composesession . "\">\n";
+ echo '<input type=hidden name=querystring value="' . $_SERVER['QUERY_STRING'] . "\">\n";
echo '</FORM>';
do_hook('compose_bottom');
echo '</BODY></HTML>' . "\n";
$request_mdn, $request_dr,
$data_dir, $username;
- echo " <TR><TD>\n</TD><TD>\n";
+ echo ' <TR>' . "\n" .
+ ' <TD></TD>' . "\n" .
+ ' <TD>' . "\n";
if ($default_use_priority) {
if(!isset($mailprio)) {
$mailprio = "3";
}
- echo _("Priority") .': <select name="mailprio">'.
+ echo ' ' . _("Priority") .': <select name="mailprio">'.
'<option value="1"'.($mailprio=='1'?' selected':'').'>'. _("High") .'</option>'.
'<option value="3"'.($mailprio=='3'?' selected':'').'>'. _("Normal") .'</option>'.
'<option value="5"'.($mailprio=='5'?' selected':'').'>'. _("Low").'</option>'.
- "</select>";
+ '</select>' . "\n";
}
$mdn_user_support=getPref($data_dir, $username, 'mdn_user_support',$default_use_mdn);
if ($default_use_mdn) {
if ($mdn_user_support) {
- echo "\n\t". _("Receipt") .': '.
+ echo ' ' . _("Receipt") .': '.
'<input type="checkbox" name="request_mdn" value=1'.
($request_mdn=='1'?' checked':'') .'>'. _("On Read").
' <input type="checkbox" name="request_dr" value=1'.
}
}
- echo " </td></tr>\n <TR><td>\n </td><td>\n" .
- "\n <INPUT TYPE=SUBMIT NAME=\"sigappend\" VALUE=\"". _("Signature") . "\">\n";
+ echo ' </TD>' . "\n" .
+ ' </TR>' . "\n" .
+ ' <TR>' . "\n" .
+ ' <TD></TD>' . "\n" .
+ ' <TD>' . "\n" .
+ ' <INPUT TYPE=SUBMIT NAME="sigappend" VALUE="' . _("Signature") . '">' . "\n";
if ($use_javascript_addr_book) {
- echo " <SCRIPT LANGUAGE=JavaScript><!--\n document.write(\"".
- " <input type=button value=\\\""._("Addresses").
- "\\\" onclick='javascript:open_abook();'>\");".
- " // --></SCRIPT><NOSCRIPT>\n".
- " <input type=submit name=\"html_addr_search\" value=\"".
+ echo " <SCRIPT LANGUAGE=JavaScript><!--\n document.write(\"".
+ " <input type=button value=\\\""._("Addresses").
+ "\\\" onclick='javascript:open_abook();'>\");".
+ " // --></SCRIPT><NOSCRIPT>\n".
+ " <input type=submit name=\"html_addr_search\" value=\"".
_("Addresses")."\">".
- " </NOSCRIPT>\n";
+ " </NOSCRIPT>\n";
} else {
- echo " <input type=submit name=\"html_addr_search\" value=\"".
- _("Addresses")."\">";
+ echo ' <input type=submit name="html_addr_search" value="'.
+ _("Addresses").'">' . "\n";
}
if ($save_as_draft) {
- echo '<input type="submit" name ="draft" value="' . _("Save Draft") . "\">\n";
+ echo ' <input type="submit" name ="draft" value="' . _("Save Draft") . "\">\n";
}
- echo '<INPUT TYPE=submit NAME=send VALUE="'. _("Send") . "\">\n";
+ echo ' <INPUT TYPE=submit NAME=send VALUE="'. _("Send") . '">' . "\n";
do_hook('compose_button_row');
- echo " </TD></TR>\n\n";
+ echo ' </TD>' . "\n" .
+ ' </TR>' . "\n\n";
}
function checkInput ($show) {
The message also should be constructed by the message class.
*/
-function sendMessage($composeMessage, $draft=false) {
+function deliverMessage($composeMessage, $draft=false) {
global $send_to, $send_to_cc, $send_to_bcc, $mailprio, $subject, $body,
$username, $popuser, $usernamedata, $identity, $data_dir,
$request_mdn, $request_dr, $default_charset, $color, $useSendmail,