X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fdraft_actions.php;h=db4032785be25f612a0a3bb2f68a07ba96e12941;hb=95dcee50e4d7ffe1d0b686377042ff3b735bc81c;hp=dff29f790c9727e6d13739475b1fc6a512864a70;hpb=e5eadbf5608cc608c7e516a1e007707ddfdfbd22;p=squirrelmail.git diff --git a/src/draft_actions.php b/src/draft_actions.php index dff29f79..db403278 100644 --- a/src/draft_actions.php +++ b/src/draft_actions.php @@ -1,164 +1,211 @@ "; - } else { + } else { $from = '"' . encodeHeader($from) . "\" <$from_addr>"; - } + } - /* This creates an RFC 822 date */ - $date = date("D, j M Y H:i:s ", mktime()) . timezone(); + /* This creates an RFC 822 date */ + $date = date("D, j M Y H:i:s ", mktime()) . timezone(); - /* Create a message-id */ - $message_id = '<' . $REMOTE_PORT . '.' . $REMOTE_ADDR . '.'; - $message_id .= time() . '.squirrel@' . $SERVER_NAME .'>'; + /* Create a message-id */ + $message_id = '<' . $REMOTE_PORT . '.' . $REMOTE_ADDR . '.'; + $message_id .= time() . '.squirrel@' . $SERVER_NAME .'>'; - /* Insert header fields */ - $header = "Message-ID: $message_id\r\n"; - $header .= "Date: $date\r\n"; - $header .= "Subject: $subject\r\n"; - $header .= "From: $from\r\n"; - $header .= "To: $t\r\n"; // Who it's TO + /* Insert header fields */ + $header = "Message-ID: $message_id\r\n"; + $header .= "Date: $date\r\n"; + $header .= "Subject: $subject\r\n"; + $header .= "From: $from\r\n"; + $header .= "To: $t\r\n"; // Who it's TO - /* Insert headers from the $more_headers array */ - if(is_array($more_headers)) { + /* Insert headers from the $more_headers array */ + if(is_array($more_headers)) { reset($more_headers); while(list($h_name, $h_val) = each($more_headers)) { $header .= sprintf("%s: %s\r\n", $h_name, $h_val); } - } + } - if ($c) { + if ($c) { $header .= "Cc: $c\r\n"; // Who the CCs are - } + } - if ($b) { + if ($b) { $header .= "Bcc: $b\r\n"; // Who the BCCs are - } + } - if ($reply_to != '') + if ($reply_to != '') { $header .= "Reply-To: $reply_to\r\n"; + } - $header .= "X-Mailer: SquirrelMail (version $version)\r\n"; // Identify SquirrelMail + $header .= "X-Mailer: SquirrelMail (version $version)\r\n"; // Identify SquirrelMail - /* Do the MIME-stuff */ - $header .= "MIME-Version: 1.0\r\n"; + /* Do the MIME-stuff */ + $header .= "MIME-Version: 1.0\r\n"; - if (isMultipart()) { + if (isMultipart($session)) { $header .= 'Content-Type: multipart/mixed; boundary="'; $header .= mimeBoundary(); $header .= "\"\r\n"; - } else { + } else { if ($default_charset != '') - $header .= "Content-Type: text/plain; charset=$default_charset\r\n"; + $header .= "Content-Type: text/plain; charset=$default_charset\r\n"; else - $header .= "Content-Type: text/plain;\r\n"; + $header .= "Content-Type: text/plain;\r\n"; $header .= "Content-Transfer-Encoding: 8bit\r\n"; - } - $header .= "\r\n"; // One blank line to separate header and body + } + $header .= "\r\n"; // One blank line to separate header and body - $headerlength = strlen($header); - } + $headerlength = strlen($header); + } - // Write the header - fputs ($fp, $header); + /* Write the header */ + fputs ($fp, $header); - return $headerlength; - } + return $headerlength; +} - // Send the body - function writeBodyForDraft ($fp, $passedBody) { - global $default_charset; +/* Send the body */ +function writeBodyForDraft ($fp, $passedBody, $session) { + global $default_charset; - $attachmentlength = 0; + $attachmentlength = 0; - if (isMultipart()) { - $body = '--'.mimeBoundary()."\r\n"; + if (isMultipart($session)) { + $body = '--'.mimeBoundary()."\r\n"; - if ($default_charset != "") + if ($default_charset != ""){ $body .= "Content-Type: text/plain; charset=$default_charset\r\n"; - else + } else { $body .= "Content-Type: text/plain\r\n"; + } + + $body .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; + $body .= $passedBody . "\r\n\r\n"; + fputs ($fp, $body); - $body .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; - $body .= $passedBody . "\r\n\r\n"; - fputs ($fp, $body); + $attachmentlength = attachFiles($fp, $session); - $attachmentlength = attachFiles($fp); + if (!isset($postbody)) $postbody = ""; + $postbody .= "\r\n--".mimeBoundary()."--\r\n\r\n"; + fputs ($fp, $postbody); + } else { + $body = $passedBody . "\r\n"; + fputs ($fp, $body); + $postbody = "\r\n"; + fputs ($fp, $postbody); + } + + return (strlen($body) + strlen($postbody) + $attachmentlength); +} - if (!isset($postbody)) $postbody = ""; - $postbody .= "\r\n--".mimeBoundary()."--\r\n\r\n"; - fputs ($fp, $postbody); - } else { - $body = $passedBody . "\r\n"; - fputs ($fp, $body); - $postbody = "\r\n"; - fputs ($fp, $postbody); - } - return (strlen($body) + strlen($postbody) + $attachmentlength); - } +function saveMessageAsDraft($t, $c, $b, $subject, $body, $reply_id, $prio = 3, $session) { + global $useSendmail, $msg_id, $is_reply, $mailbox, $onetimepad, + $data_dir, $domain, $version, $sent_folder, + $imapServerAddress, $imapPort, $draft_folder, $attachment_dir, + $default_use_priority, $_SESSION, $_COOKIE; + $more_headers = Array(); + $username = $_SESSION['username']; + $key = $_COOKIE['key']; - function saveMessageAsDraft($t, $c, $b, $subject, $body, $reply_id) { - global $useSendmail, $msg_id, $is_reply, $mailbox, $onetimepad; - global $data_dir, $username, $domain, $key, $version, $sent_folder, $imapServerAddress, $imapPort; - global $draft_folder, $attachment_dir; - $more_headers = Array(); + if ($default_use_priority) { + $more_headers = array_merge($more_headers, createPriorityHeaders($prio)); + } - $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 1); + $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 1); - $tmpDraftFile = "draft-" . GenerateRandomString(32, '', 7); - while ( file_exists($attachment_dir .$tmpDraftFile) ) + $hashed_attachment_dir = getHashedDir($username, $attachment_dir); + + $tmpDraftFile = "draft-" . GenerateRandomString(32, '', 7); + $full_tmpDraftFile = "$hashed_attachment_dir/$tmpDraftFile"; + while (file_exists($full_tmpDraftFile)){ $tmpDraftFile = "draft-" . GenerateRandomString(32, '', 7); - $fp = fopen($attachment_dir . $tmpDraftFile, 'w'); - - $headerlength = write822HeaderForDraft ($fp, $t, $c, $b, $subject, $more_headers, FALSE); - $bodylength = writeBodyForDraft ($fp, $body, FALSE); - fclose($fp); - - $length = ($headerlength + $bodylength); - - if (sqimap_mailbox_exists ($imap_stream, $draft_folder)) { - sqimap_append ($imap_stream, $draft_folder, $length); - write822HeaderForDraft ($imap_stream, $t, $c, $b, $subject, $more_headers, TRUE); - writeBodyForDraft ($imap_stream, $body, TRUE); - sqimap_append_done ($imap_stream); - } - sqimap_logout($imap_stream); - if ($length) - ClearAttachments(); - if (file_exists($attachment_dir . $tmpDraftFile) ) - unlink ($attachment_dir . $tmpDraftFile); - return $length; + $full_tmpDraftFile = "$hashed_attachment_dir/$tmpDraftFile"; + } + $fp = fopen($full_tmpDraftFile, 'wb'); + + $headerlength = write822HeaderForDraft + ($fp, $t, $c, $b, $subject, $more_headers, $session); + $bodylength = writeBodyForDraft ($fp, $body, $session); + fclose($fp); + + $length = ($headerlength + $bodylength); + + if (sqimap_mailbox_exists ($imap_stream, $draft_folder)) { + sqimap_append ($imap_stream, $draft_folder, $length); + write822HeaderForDraft + ($imap_stream, $t, $c, $b, $subject, $more_headers, $session); + writeBodyForDraft ($imap_stream, $body, $session); + sqimap_append_done ($imap_stream); + } + sqimap_logout($imap_stream); + if ($length){ + ClearAttachments($session); + } + if (file_exists($full_tmpDraftFile)){ + unlink ($full_tmpDraftFile); + } + return $length; } + ?>