X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=src%2Fcompose.php;h=b548153f887ade6281a2269058ffb8b9446ab348;hp=52f88ad27e13f7cbfd4bfb2fe2f21fda8b43d38a;hb=a90d951c398971d2a31cfc47f6f6a5859929d17f;hpb=a15f9d9379cebc62fa39b6cb10d2195f95ed5081;ds=sidebyside
diff --git a/src/compose.php b/src/compose.php
index 52f88ad2..b548153f 100644
--- a/src/compose.php
+++ b/src/compose.php
@@ -1,5 +1,4 @@
setDelayedErrors(true);
+
/** SESSION/POST/GET VARS */
-sqgetGlobalVar('session',$session);
-sqgetGlobalVar('mailbox',$mailbox);
-if(!sqgetGlobalVar('identity',$identity)) {
+sqgetGlobalVar('send', $send, SQ_POST);
+// Send can only be achieved by setting $_POST var. If Send = true then
+// retrieve other form fields from $_POST
+if (isset($send) && $send) {
+ $SQ_GLOBAL = SQ_POST;
+} else {
+ $SQ_GLOBAL = SQ_FORM;
+}
+sqgetGlobalVar('session',$session, $SQ_GLOBAL);
+sqgetGlobalVar('mailbox',$mailbox, $SQ_GLOBAL);
+if(!sqgetGlobalVar('identity',$identity, $SQ_GLOBAL)) {
$identity=0;
}
-sqgetGlobalVar('send_to',$send_to);
-sqgetGlobalVar('send_to_cc',$send_to_cc);
-sqgetGlobalVar('send_to_bcc',$send_to_bcc);
-sqgetGlobalVar('subject',$subject);
-sqgetGlobalVar('body',$body);
-sqgetGlobalVar('mailprio',$mailprio);
-sqgetGlobalVar('request_mdn',$request_mdn);
-sqgetGlobalVar('request_dr',$request_dr);
-sqgetGlobalVar('html_addr_search',$html_addr_search);
-sqgetGlobalVar('mail_sent',$mail_sent);
-sqgetGlobalVar('passed_id',$passed_id);
-sqgetGlobalVar('passed_ent_id',$passed_ent_id);
-sqgetGlobalVar('send',$send);
-
-sqgetGlobalVar('attach',$attach);
-
-sqgetGlobalVar('draft',$draft);
-sqgetGlobalVar('draft_id',$draft_id);
-sqgetGlobalVar('ent_num',$ent_num);
-sqgetGlobalVar('saved_draft',$saved_draft);
-sqgetGlobalVar('delete_draft',$delete_draft);
+sqgetGlobalVar('send_to',$send_to, $SQ_GLOBAL);
+sqgetGlobalVar('send_to_cc',$send_to_cc, $SQ_GLOBAL);
+sqgetGlobalVar('send_to_bcc',$send_to_bcc, $SQ_GLOBAL);
+sqgetGlobalVar('subject',$subject, $SQ_GLOBAL);
+sqgetGlobalVar('body',$body, $SQ_GLOBAL);
+sqgetGlobalVar('mailprio',$mailprio, $SQ_GLOBAL);
+sqgetGlobalVar('request_mdn',$request_mdn, $SQ_GLOBAL);
+sqgetGlobalVar('request_dr',$request_dr, $SQ_GLOBAL);
+sqgetGlobalVar('html_addr_search',$html_addr_search, $SQ_GLOBAL);
+sqgetGlobalVar('mail_sent',$mail_sent, $SQ_GLOBAL);
+sqgetGlobalVar('passed_id',$passed_id, $SQ_GLOBAL);
+sqgetGlobalVar('passed_ent_id',$passed_ent_id, $SQ_GLOBAL);
+
+sqgetGlobalVar('attach',$attach, SQ_POST);
+sqgetGlobalVar('draft',$draft, SQ_POST);
+sqgetGlobalVar('draft_id',$draft_id, $SQ_GLOBAL);
+sqgetGlobalVar('ent_num',$ent_num, $SQ_GLOBAL);
+sqgetGlobalVar('saved_draft',$saved_draft, SQ_FORM);
+
+if ( sqgetGlobalVar('delete_draft',$delete_draft) ) {
+ $delete_draft = (int)$delete_draft;
+}
+
if ( sqgetGlobalVar('startMessage',$startMessage) ) {
$startMessage = (int)$startMessage;
} else {
@@ -84,19 +104,19 @@ if ( sqgetGlobalVar('startMessage',$startMessage) ) {
/** POST VARS */
-sqgetGlobalVar('sigappend', $sigappend, SQ_POST);
-sqgetGlobalVar('from_htmladdr_search', $from_htmladdr_search, SQ_POST);
-sqgetGlobalVar('addr_search_done', $html_addr_search_done, SQ_POST);
-sqgetGlobalVar('send_to_search', $send_to_search, SQ_POST);
-sqgetGlobalVar('do_delete', $do_delete, SQ_POST);
-sqgetGlobalVar('delete', $delete, SQ_POST);
-sqgetGlobalVar('restoremessages', $restoremessages, SQ_POST);
+sqgetGlobalVar('sigappend', $sigappend, SQ_POST);
+sqgetGlobalVar('from_htmladdr_search', $from_htmladdr_search, SQ_POST);
+sqgetGlobalVar('addr_search_done', $html_addr_search_done, SQ_POST);
+sqgetGlobalVar('addr_search_cancel', $html_addr_search_cancel, SQ_POST);
+sqgetGlobalVar('send_to_search', $send_to_search, SQ_POST);
+sqgetGlobalVar('do_delete', $do_delete, SQ_POST);
+sqgetGlobalVar('delete', $delete, SQ_POST);
+sqgetGlobalVar('attachments', $attachments, SQ_POST);
if ( sqgetGlobalVar('return', $temp, SQ_POST) ) {
$html_addr_search_done = 'Use Addresses';
}
/** GET VARS */
-sqgetGlobalVar('attachedmessages', $attachedmessages, SQ_GET);
if ( sqgetGlobalVar('account', $temp, SQ_GET) ) {
$iAccount = (int) $temp;
} else {
@@ -115,7 +135,26 @@ if ( !sqgetGlobalVar('smaction',$action) )
if ( sqgetGlobalVar('smaction_edit_new',$tmp) ) $action = 'edit_as_new';
}
-/* Location (For HTTP 1.1 Header("Location: ...") redirects) */
+/**
+ * Here we decode the data passed in from mailto.php.
+ */
+if ( sqgetGlobalVar('mailtodata', $mailtodata, SQ_GET) ) {
+ $trtable = array('to' => 'send_to',
+ 'cc' => 'send_to_cc',
+ 'bcc' => 'send_to_bcc',
+ 'body' => 'body',
+ 'subject' => 'subject');
+ $mtdata = unserialize($mailtodata);
+
+ foreach ($trtable as $f => $t) {
+ if ( !empty($mtdata[$f]) ) {
+ $$t = $mtdata[$f];
+ }
+ }
+ unset($mailtodata,$mtdata, $trtable);
+}
+
+/* Location (For HTTP 1.1 header("Location: ...") redirects) */
$location = get_location();
/* Identities (fetch only once) */
$idents = get_identities();
@@ -128,8 +167,8 @@ function replyAllString($header) {
/**
* 1) Remove the addresses we'll be sending the message 'to'
*/
- if (isset($header->replyto)) {
- $excl_ar = $header->getAddr_a('replyto');
+ if (isset($header->reply_to)) {
+ $excl_ar = $header->getAddr_a('reply_to');
}
/**
* 2) Remove our identities from the CC list (they still can be in the
@@ -266,7 +305,7 @@ function getforwardHeader($orig_header) {
$bodyTop = sq_str_pad(' '._("Original Message").' ',$editor_size -2,'-',STR_PAD_BOTH,$default_charset) .
"\n". $display[_("Subject")] . $subject . "\n" .
$display[_("From")] . $from . "\n" .
- $display[_("Date")] . getLongDateString( $orig_header->date ). "\n" .
+ $display[_("Date")] . getLongDateString( $orig_header->date, $orig_header->date_unparsed ). "\n" .
$display[_("To")] . $to . "\n";
if ($orig_header->cc != array() && $orig_header->cc !='') {
$cc = decodeHeader($orig_header->getAddr_s('cc',"\n$indent"),false,false,true);
@@ -283,27 +322,34 @@ function getforwardHeader($orig_header) {
* If the session is expired during a post this restores the compose session
* vars.
*/
+$session_expired = false;
if (sqsession_is_registered('session_expired_post')) {
sqgetGlobalVar('session_expired_post', $session_expired_post, SQ_SESSION);
/*
* 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');
- session_write_close();
- } else {
- foreach ($session_expired_post as $postvar => $val) {
- if (isset($val)) {
- $$postvar = $val;
- } else {
- $$postvar = '';
+ if (!empty($session_expired_post['username'])
+ && $session_expired_post['username'] == $username) {
+ // these are the vars that we can set from the expired composed session
+ $compo_var_list = array ('send_to', 'send_to_cc', 'body',
+ 'startMessage', 'passed_body', 'use_signature', 'signature',
+ 'subject', 'newmail', 'send_to_bcc', 'passed_id', 'mailbox',
+ 'from_htmladdr_search', 'identity', 'draft_id', 'delete_draft',
+ 'mailprio', 'edit_as_new', 'attachments', 'composesession',
+ 'request_mdn', 'request_dr');
+
+ foreach ($compo_var_list as $var) {
+ if ( isset($session_expired_post[$var]) && !isset($$var) ) {
+ $$var = $session_expired_post[$var];
}
}
- $compose_messages = unserialize(urldecode($restoremessages));
- sqsession_register($compose_messages,'compose_messages');
+
+ if (!empty($attachments))
+ $attachments = unserialize(urldecode($attachments));
+
sqsession_register($composesession,'composesession');
+
if (isset($send)) {
unset($send);
}
@@ -329,9 +375,12 @@ if (sqsession_is_registered('session_expired_post')) {
showInputForm($session, false);
exit();
}
+
if (!isset($composesession)) {
$composesession = 0;
sqsession_register(0,'composesession');
+} else {
+ $composesession = (int)$composesession;
}
if (!isset($session) || (isset($newmessage) && $newmessage)) {
@@ -340,23 +389,25 @@ if (!isset($session) || (isset($newmessage) && $newmessage)) {
$composesession = $session;
sqsession_register($composesession,'composesession');
}
-if (!isset($compose_messages)) {
- $compose_messages = array();
-}
-
-if (!isset($compose_messages[$session]) || ($compose_messages[$session] == NULL)) {
+if (!empty($compose_messages[$session])) {
+ $composeMessage = $compose_messages[$session];
+} else {
$composeMessage = new Message();
$rfc822_header = new Rfc822Header();
$composeMessage->rfc822_header = $rfc822_header;
$composeMessage->reply_rfc822_header = '';
- $compose_messages[$session] = $composeMessage;
+}
- sqsession_register($compose_messages,'compose_messages');
-} else {
- $composeMessage=$compose_messages[$session];
+// re-add attachments that were already in this message
+// FIXME: note that technically this is very bad form -
+// should never directly manipulate an object like this
+if (!empty($attachments)) {
+ $attachments = unserialize(urldecode($attachments));
+ if (!empty($attachments) && is_array($attachments))
+ $composeMessage->entities = $attachments;
}
-if (!isset($mailbox) || $mailbox == '' || ($mailbox == 'None')) {
+if (empty($mailbox)) {
$mailbox = 'INBOX';
}
@@ -366,16 +417,14 @@ if ($draft) {
* of language interface.
*/
set_my_charset();
- $composeMessage=$compose_messages[$session];
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)) {
- $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, false);
+ $imap_stream = sqimap_login($username, false, $imapServerAddress, $imapPort, false);
sqimap_mailbox_select($imap_stream, $draft_folder);
// force bypass_trash=true because message should be saved when deliverMessage() returns true.
// in current implementation of sqimap_msgs_list_flag() single message id can
@@ -386,25 +435,30 @@ if ($draft) {
}
sqimap_logout($imap_stream);
}
+
+ $oErrorHandler->saveDelayedErrors();
session_write_close();
+
if ($compose_new_win == '1') {
if ( !isset($pageheader_sent) || !$pageheader_sent ) {
- Header("Location: $location/compose.php?saved_draft=yes&session=$composesession");
+ header("Location: $location/compose.php?saved_draft=yes&session=$composesession");
} else {
- echo '
'
- . _("Return") . '';
+ . _("Return") . '';
}
exit();
} else {
if ( !isset($pageheader_sent) || !$pageheader_sent ) {
- Header("Location: $location/right_main.php?mailbox=" . urlencode($draft_folder) .
+ header("Location: $location/right_main.php?mailbox=" . urlencode($draft_folder) .
"&startMessage=1¬e=".urlencode($draft_message));
} else {
- echo '
'
- . _("Return") . '';
+ . _("Return") . '';
}
exit();
}
@@ -422,7 +476,7 @@ if ($send) {
/* We entered compose via the search results page */
$mailbox = 'INBOX'; /* Send 'em to INBOX, that's safe enough */
}
- $urlMailbox = urlencode (trim($mailbox));
+ $urlMailbox = urlencode($mailbox);
if (! isset($passed_id)) {
$passed_id = 0;
}
@@ -447,10 +501,10 @@ if ($send) {
if( $line <> '-- ' ) {
$line = rtrim($line);
}
- if (sq_strlen($line,$default_charset) <= $editor_size + 1) {
+ if (sq_strlen($line, $default_charset) <= $editor_size + 1) {
$newBody .= $line . "\n";
} else {
- sqWordWrap($line, $editor_size,$default_charset);
+ sqWordWrap($line, $editor_size, $default_charset);
$newBody .= $line . "\n";
}
@@ -458,19 +512,26 @@ if ($send) {
}
$body = $newBody;
- $composeMessage=$compose_messages[$session];
-
$Result = deliverMessage($composeMessage);
- do_hook('compose_send_after', $Result, $composeMessage);
+
+ if ($Result)
+ $mail_sent = 'yes';
+ else
+ $mail_sent = 'no';
+
+ // NOTE: this hook changed in 1.5.2 from sending $Result and
+ // $composeMessage as args #2 and #3 to being in an array
+ // under arg #2
+ $temp = array(&$Result, &$composeMessage, &$mail_sent);
+ do_hook('compose_send_after', $temp);
if (! $Result) {
showInputForm($session);
exit();
}
- unset($compose_messages[$session]);
/* if it is resumed draft, delete draft message */
if ( isset($delete_draft)) {
- $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, false);
+ $imap_stream = sqimap_login($username, false, $imapServerAddress, $imapPort, false);
sqimap_mailbox_select($imap_stream, $draft_folder);
// bypass_trash=true because message should be saved when deliverMessage() returns true.
// in current implementation of sqimap_msgs_list_flag() single message id can
@@ -481,25 +542,32 @@ if ($send) {
}
sqimap_logout($imap_stream);
}
+ /*
+ * Store the error array in the session because they will be lost on a redirect
+ */
+ $oErrorHandler->saveDelayedErrors();
session_write_close();
+
if ($compose_new_win == '1') {
if ( !isset($pageheader_sent) || !$pageheader_sent ) {
- Header("Location: $location/compose.php?mail_sent=yes");
+ header("Location: $location/compose.php?mail_sent=$mail_sent");
} else {
- echo '
'
- . _("Return") . '';
+//FIXME: DON'T ECHO HTML FROM CORE!
+ echo '
';
}
exit();
} else {
if ( !isset($pageheader_sent) || !$pageheader_sent ) {
- Header("Location: $location/right_main.php?mailbox=$urlMailbox".
- "&startMessage=$startMessage&mail_sent=yes");
+ header("Location: $location/right_main.php?mailbox=$urlMailbox".
+ "&startMessage=$startMessage&mail_sent=$mail_sent");
} else {
- echo '
"
- . _("Return") . '';
+ . "&startMessage=$startMessage&mail_sent=$mail_sent\">"
+ . _("Return") . '';
}
exit();
}
@@ -549,12 +617,12 @@ if ($send) {
}
}
showInputForm($session);
-} elseif (isset($html_addr_search)) {
+} elseif (isset($html_addr_search) && !isset($html_addr_search_cancel)) {
if (isset($_FILES['attachfile']) &&
$_FILES['attachfile']['tmp_name'] &&
$_FILES['attachfile']['tmp_name'] != 'none') {
if(saveAttachedFiles($session)) {
- plain_error_message(_("Could not move/copy file. File not attached"), $color);
+ plain_error_message(_("Could not move/copy file. File not attached"));
}
}
/*
@@ -563,14 +631,14 @@ if ($send) {
*/
include_once('./addrbook_search_html.php');
} elseif (isset($attach)) {
- if (saveAttachedFiles($session)) {
- plain_error_message(_("Could not move/copy file. File not attached"), $color);
- }
if ($compose_new_win == '1') {
compose_Header($color, $mailbox);
} else {
displayPageHeader($color, $mailbox);
}
+ if (saveAttachedFiles($session)) {
+ plain_error_message(_("Could not move/copy file. File not attached"));
+ }
showInputForm($session);
}
elseif (isset($sigappend)) {
@@ -591,7 +659,6 @@ elseif (isset($sigappend)) {
}
if (isset($delete) && is_array($delete)) {
- $composeMessage = $compose_messages[$session];
foreach($delete as $index) {
if (!empty($composeMessage->entities) && isset($composeMessage->entities[$index])) {
$composeMessage->entities[$index]->purgeAttachments();
@@ -603,8 +670,6 @@ elseif (isset($sigappend)) {
$new_entities[] = $entity;
}
$composeMessage->entities = $new_entities;
- $compose_messages[$session] = $composeMessage;
- sqsession_register($compose_messages, 'compose_messages');
}
showInputForm($session);
} else {
@@ -670,9 +735,10 @@ function getforwardSubject($subject)
function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $session='') {
global $editor_size, $default_use_priority, $body, $idents,
$use_signature, $data_dir, $username,
- $username, $key, $imapServerAddress, $imapPort, $compose_messages,
- $composeMessage, $body_quote;
- global $languages, $squirrelmail_language, $default_charset;
+ $key, $imapServerAddress, $imapPort,
+ $composeMessage, $body_quote, $request_mdn, $request_dr,
+ $mdn_user_support, $languages, $squirrelmail_language,
+ $default_charset;
/*
* Set $default_charset to correspond with the user's selection
@@ -685,7 +751,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
$mailprio = 3;
if ($passed_id) {
- $imapConnection = sqimap_login($username, $key, $imapServerAddress,
+ $imapConnection = sqimap_login($username, false, $imapServerAddress,
$imapPort, 0);
sqimap_mailbox_select($imapConnection, $mailbox);
@@ -704,7 +770,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
(array(), $alt_order = array('text/plain'));
if (!count($entities)) {
$entities = $message->entities[0]->findDisplayEntity
- (array(), $alt_order = array('text/plain','html/plain'));
+ (array(), $alt_order = array('text/plain','text/html'));
}
$orig_header = $message->rfc822_header; /* here is the envelope located */
/* redefine the message for picking up the attachments */
@@ -713,7 +779,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
} else {
$entities = $message->findDisplayEntity (array(), $alt_order = array('text/plain'));
if (!count($entities)) {
- $entities = $message->findDisplayEntity (array(), $alt_order = array('text/plain','html/plain'));
+ $entities = $message->findDisplayEntity (array(), $alt_order = array('text/plain','text/html'));
}
$orig_header = $message->rfc822_header;
}
@@ -764,7 +830,6 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
$mailprio = '';
}
- $identity = '';
$from_o = $orig_header->from;
if (is_array($from_o)) {
if (isset($from_o[0])) {
@@ -781,7 +846,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
if (count($idents) > 1) {
foreach($idents as $nr=>$data) {
$enc_from_name = '"'.$data['full_name'].'" <'. $data['email_address'].'>';
- if($enc_from_name == $orig_from) {
+ if(strtolower($enc_from_name) == strtolower($orig_from)) {
$identity = $nr;
break;
}
@@ -805,17 +870,15 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
$send_from_parts = new AddressStructure();
$send_from_parts = $orig_header->parseAddress($send_from);
$send_from_add = $send_from_parts->mailbox . '@' . $send_from_parts->host;
- $identities = get_identities();
- if (count($identities) > 0) {
- foreach($identities as $iddata) {
- if ($send_from_add == $iddata['email_address']) {
- $identity = $iddata['index'];
- break;
- }
- }
- }
+ $identity = find_identity(array($send_from_add));
$subject = decodeHeader($orig_header->subject,false,false,true);
+
+ // Remember the receipt settings
+ $request_mdn = $mdn_user_support && !empty($orig_header->dnt) ? '1' : '0';
+ $request_dr = $mdn_user_support && !empty($orig_header->drnt) ? '1' : '0';
+
/* remember the references and in-reply-to headers in case of an reply */
+//FIXME: it would be better to fiddle with headers inside of the message object or possibly when delivering the message to its destination (drafts folder?); is this possible?
$composeMessage->rfc822_header->more_headers['References'] = $orig_header->references;
$composeMessage->rfc822_header->more_headers['In-Reply-To'] = $orig_header->in_reply_to;
// rewrap the body to clean up quotations and line lengths
@@ -878,7 +941,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
}
/* 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) && !empty($orig_header->from)) ? $orig_header->from[0] : $orig_header->from;
$body = '';
$strip_sigs = getPref($data_dir, $username, 'strip_sigs');
foreach ($rewrap_body as $line) {
@@ -903,8 +966,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
default:
break;
}
- $compose_messages[$session] = $composeMessage;
- sqsession_register($compose_messages, 'compose_messages');
+//FIXME: we used to register $compose_messages in the session here, but not any more - so do we still need the session_write_close() and sqimap_logout() here? We probably need the IMAP logout, but what about the session closure?
session_write_close();
sqimap_logout($imapConnection);
}
@@ -930,8 +992,8 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
* @return object
*/
function getAttachments($message, &$composeMessage, $passed_id, $entities, $imapConnection) {
- global $attachment_dir, $username, $data_dir, $squirrelmail_language, $languages;
- $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
+ global $squirrelmail_language, $languages, $username, $attachment_dir;
+
if (!count($message->entities) ||
($message->type0 == 'message' && $message->type1 == 'rfc822')) {
if ( !in_array($message->entity_id, $entities) && $message->entity_id) {
@@ -942,7 +1004,7 @@ function getAttachments($message, &$composeMessage, $passed_id, $entities, $imap
if ($filename == "") {
$filename = "untitled-".$message->entity_id;
}
- $filename .= '.msg';
+ $filename .= '.eml';
} else {
$filename = $message->getFilename();
}
@@ -959,19 +1021,16 @@ function getAttachments($message, &$composeMessage, $passed_id, $entities, $imap
function_exists($languages[$squirrelmail_language]['XTRA_CODE'] . '_encode')) {
$filename = call_user_func($languages[$squirrelmail_language]['XTRA_CODE'] . '_encode', $filename);
}
- $localfilename = GenerateRandomString(32, '', 7);
- $full_localfilename = "$hashed_attachment_dir/$localfilename";
- while (file_exists($full_localfilename)) {
- $localfilename = GenerateRandomString(32, '', 7);
- $full_localfilename = "$hashed_attachment_dir/$localfilename";
- }
- $message->att_local_name = $full_localfilename;
+
+ $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
+ $localfilename = sq_get_attach_tempfile();
+ $message->att_local_name = $localfilename;
$composeMessage->initAttachment($message->type0.'/'.$message->type1,$filename,
- $full_localfilename);
+ $localfilename);
/* Write Attachment to file */
- $fp = fopen ("$hashed_attachment_dir/$localfilename", 'wb');
+ $fp = fopen ($hashed_attachment_dir . '/' . $localfilename, 'wb');
mime_print_body_lines ($imapConnection, $passed_id, $message->entity_id, $message->header->encoding, $fp);
fclose ($fp);
}
@@ -985,8 +1044,6 @@ function getAttachments($message, &$composeMessage, $passed_id, $entities, $imap
function getMessage_RFC822_Attachment($message, $composeMessage, $passed_id,
$passed_ent_id='', $imapConnection) {
- global $attachment_dir, $username, $data_dir;
- $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
if (!$passed_ent_id) {
$body_a = sqimap_run_command($imapConnection,
'FETCH '.$passed_id.' RFC822',
@@ -1004,28 +1061,29 @@ function getMessage_RFC822_Attachment($message, $composeMessage, $passed_id,
array_pop($body_a);
$body = implode('', $body_a) . "\r\n";
- $localfilename = GenerateRandomString(32, 'FILE', 7);
- $full_localfilename = "$hashed_attachment_dir/$localfilename";
-
- $fp = fopen($full_localfilename, 'w');
+ global $username, $attachment_dir;
+ $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
+ $localfilename = sq_get_attach_tempfile();
+ $fp = fopen($hashed_attachment_dir . '/' . $localfilename, 'wb');
fwrite ($fp, $body);
fclose($fp);
- $composeMessage->initAttachment('message/rfc822',$subject.'.msg',
- $full_localfilename);
+ $composeMessage->initAttachment('message/rfc822',$subject.'.eml',
+ $localfilename);
}
return $composeMessage;
}
function showInputForm ($session, $values=false) {
- global $send_to, $send_to_cc, $body, $startMessage, $action,
- $color, $use_signature, $signature, $prefix_sig,
+ global $send_to, $send_to_cc, $send_to_bcc,
+ $body, $startMessage, $action, $attachments,
+ $use_signature, $signature, $prefix_sig, $session_expired,
$editor_size, $editor_height, $subject, $newmail,
- $use_javascript_addr_book, $send_to_bcc, $passed_id, $mailbox,
+ $use_javascript_addr_book, $passed_id, $mailbox,
$from_htmladdr_search, $location_of_buttons, $attachment_dir,
$username, $data_dir, $identity, $idents, $delete_draft,
$mailprio, $compose_new_win, $saved_draft, $mail_sent, $sig_first,
- $username, $compose_messages, $composesession, $default_charset,
- $compose_onsubmit, $oTemplate;
+ $composeMessage, $composesession, $default_charset,
+ $compose_onsubmit, $oTemplate, $oErrorHandler;
if (checkForJavascript()) {
$onfocus = ' onfocus="alreadyFocused=true;"';
@@ -1036,7 +1094,6 @@ function showInputForm ($session, $values=false) {
$onfocus_array = array();
}
- $composeMessage = $compose_messages[$session];
if ($values) {
$send_to = $values['send_to'];
$send_to_cc = $values['send_to_cc'];
@@ -1052,7 +1109,8 @@ function showInputForm ($session, $values=false) {
}
if ($use_javascript_addr_book) {
- echo "\n". '\n\n";
}
+//FIXME: NO HTML IN CORE!
echo "\n" . '