+ break;
+ default:
+ break;
+ }
+ $compose_messages[$session] = $composeMessage;
+ sqsession_register($compose_messages, 'compose_messages');
+ session_write_close();
+ sqimap_logout($imapConnection);
+ }
+ $ret = array( 'send_to' => $send_to,
+ 'send_to_cc' => $send_to_cc,
+ 'send_to_bcc' => $send_to_bcc,
+ 'subject' => $subject,
+ 'mailprio' => $mailprio,
+ 'body' => $body,
+ 'identity' => $identity );
+
+ return ($ret);
+} /* function newMail() */
+
+function getAttachments($message, &$composeMessage, $passed_id, $entities, $imapConnection) {
+ global $attachment_dir, $username, $data_dir, $squirrelmail_language;
+ $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
+ if (!count($message->entities) ||
+ ($message->type0 == 'message' && $message->type1 == 'rfc822')) {
+ if ( !in_array($message->entity_id, $entities) && $message->entity_id) {
+ switch ($message->type0) {
+ case 'message':
+ if ($message->type1 == 'rfc822') {
+ $filename = $message->rfc822_header->subject;
+ if ($filename == "") {
+ $filename = "untitled-".$message->entity_id;
+ }
+ $filename .= '.msg';
+ } else {
+ $filename = $message->getFilename();
+ }
+ break;
+ default:
+ if (!$message->mime_header) { /* temporary hack */
+ $message->mime_header = $message->header;
+ }
+ $filename = $message->getFilename();
+ break;
+ }
+ $filename = str_replace(' ', ' ', decodeHeader($filename));
+ if (isset($languages[$squirrelmail_language]['XTRA_CODE']) &&
+ function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
+ $filename = $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;
+
+ $composeMessage->initAttachment($message->type0.'/'.$message->type1,$filename,
+ $full_localfilename);
+
+ /* Write Attachment to file */
+ $fp = fopen ("$hashed_attachment_dir/$localfilename", 'wb');
+ fputs($fp, decodeBody(mime_fetch_body($imapConnection,
+ $passed_id, $message->entity_id),
+ $message->header->encoding));
+ fclose ($fp);
+ }
+ } else {
+ for ($i=0, $entCount=count($message->entities); $i<$entCount;$i++) {
+ $composeMessage=getAttachments($message->entities[$i], $composeMessage, $passed_id, $entities, $imapConnection);
+ }
+ }
+ return $composeMessage;
+}
+
+function getMessage_RFC822_Attachment($message, $composeMessage, $passed_id,
+ $passed_ent_id='', $imapConnection) {
+ global $attachments, $attachment_dir, $username, $data_dir, $uid_support;
+ $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
+ if (!$passed_ent_id) {
+ $body_a = sqimap_run_command($imapConnection,
+ 'FETCH '.$passed_id.' RFC822',
+ TRUE, $response, $readmessage,
+ $uid_support);
+ } else {
+ $body_a = sqimap_run_command($imapConnection,
+ 'FETCH '.$passed_id.' BODY['.$passed_ent_id.']',
+ TRUE, $response, $readmessage, $uid_support);
+ $message = $message->parent;
+ }
+ if ($response == 'OK') {
+ $subject = encodeHeader($message->rfc822_header->subject);
+ array_shift($body_a);
+ 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');
+ fwrite ($fp, $body);
+ fclose($fp);
+ $composeMessage->initAttachment('message/rfc822',$subject.'.msg',
+ $full_localfilename);
+ }
+ return $composeMessage;
+}
+
+function showInputForm ($session, $values=false) {
+ global $send_to, $send_to_cc, $body, $startMessage,
+ $passed_body, $color, $use_signature, $signature, $prefix_sig,
+ $editor_size, $attachments, $subject, $newmail,
+ $use_javascript_addr_book, $send_to_bcc, $passed_id, $mailbox,
+ $from_htmladdr_search, $location_of_buttons, $attachment_dir,
+ $username, $data_dir, $identity, $idents, $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, $composesession, $default_charset;
+
+ $composeMessage = $compose_messages[$session];
+
+ if ($values) {
+ $send_to = $values['send_to'];
+ $send_to_cc = $values['send_to_cc'];
+ $send_to_bcc = $values['send_to_bcc'];
+ $subject = $values['subject'];
+ $mailprio = $values['mailprio'];
+ $body = $values['body'];
+ $identity = (int) $values['identity'];
+ } else {
+ $send_to = decodeHeader($send_to);
+ $send_to_cc = decodeHeader($send_to_cc);
+ $send_to_bcc = decodeHeader($send_to_bcc);
+ }