X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fdraft_actions.php;h=dff29f790c9727e6d13739475b1fc6a512864a70;hb=7baf86a911ddc0ef8b2c3f9b9dbaa579f31ab4bc;hp=80a49f8c6aa89f4b9782d1093454e922d1821d7a;hpb=8dd8019fd8d7abc91830ac0225d80dccc27c3604;p=squirrelmail.git diff --git a/src/draft_actions.php b/src/draft_actions.php index 80a49f8c..dff29f79 100644 --- a/src/draft_actions.php +++ b/src/draft_actions.php @@ -13,9 +13,6 @@ require_once ('../src/validate.php'); static $header, $headerlength; if ($header == '') { - $to = parseAddrs($t); - $cc = parseAddrs($c); - $bcc = parseAddrs($b); if (isset($identity) && ($identity != 'default')) { $reply_to = getPref($data_dir, $username, 'reply_to' . $identity); $from = getPref($data_dir, $username, 'full_name' . $identity); @@ -30,10 +27,6 @@ require_once ('../src/validate.php'); $from_addr = $popuser.'@'.$domain; } - $to_list = getLineOfAddrs($to); - $cc_list = getLineOfAddrs($cc); - $bcc_list = getLineOfAddrs($bcc); - /* Encoding 8-bit characters and making from line */ $subject = encodeHeader($subject); if ($from == '') { @@ -49,30 +42,12 @@ require_once ('../src/validate.php'); $message_id = '<' . $REMOTE_PORT . '.' . $REMOTE_ADDR . '.'; $message_id .= time() . '.squirrel@' . $SERVER_NAME .'>'; - /* Make an RFC822 Received: line */ - if (isset($REMOTE_HOST)) { - $received_from = "$REMOTE_HOST ([$REMOTE_ADDR])"; - } else { - $received_from = $REMOTE_ADDR; - } - - if (isset($HTTP_VIA) || isset ($HTTP_X_FORWARDED_FOR)) { - if ($HTTP_X_FORWARDED_FOR == '') - $HTTP_X_FORWARDED_FOR = 'unknown'; - $received_from .= " (proxying for $HTTP_X_FORWARDED_FOR)"; - } - - $header = "Received: from $received_from\r\n"; - $header .= " (SquirrelMail authenticated user $username)\r\n"; - $header .= " by $SERVER_NAME with HTTP;\r\n"; - $header .= " $date\r\n"; - - /* Insert the rest of the header fields */ - $header .= "Message-ID: $message_id\r\n"; + /* 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: $to_list\r\n"; // Who it's TO + $header .= "To: $t\r\n"; // Who it's TO /* Insert headers from the $more_headers array */ if(is_array($more_headers)) { @@ -82,24 +57,17 @@ require_once ('../src/validate.php'); } } - if ($cc_list) { - $header .= "Cc: $cc_list\r\n"; // Who the CCs are + if ($c) { + $header .= "Cc: $c\r\n"; // Who the CCs are } - if ($bcc_list) { - $header .= "Bcc: $bcc_list\r\n"; // Who the BCCs are + if ($b) { + $header .= "Bcc: $b\r\n"; // Who the BCCs are } if ($reply_to != '') $header .= "Reply-To: $reply_to\r\n"; - if ($useSendmail) { - if ($bcc_list) { - // BCCs is removed from header by sendmail - $header .= "Bcc: $bcc_list\r\n"; - } - } - $header .= "X-Mailer: SquirrelMail (version $version)\r\n"; // Identify SquirrelMail /* Do the MIME-stuff */ @@ -127,30 +95,70 @@ require_once ('../src/validate.php'); return $headerlength; } + // Send the body + function writeBodyForDraft ($fp, $passedBody) { + global $default_charset; + + $attachmentlength = 0; + + if (isMultipart()) { + $body = '--'.mimeBoundary()."\r\n"; + + if ($default_charset != "") + $body .= "Content-Type: text/plain; charset=$default_charset\r\n"; + 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); + + $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); + } + + 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; + global $draft_folder, $attachment_dir; $more_headers = Array(); $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 1); - $fp = fopen("/dev/null", a); - $headerlength = write822HeaderForDraft ($fp, $t, $c, $b, $subject, $more_headers); - $bodylength = writeBody ($fp, $body); - fclose ($fp); + $tmpDraftFile = "draft-" . GenerateRandomString(32, '', 7); + while ( file_exists($attachment_dir .$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); - writeBody ($imap_stream, $body); + 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; } ?>