<?php
-require_once ('../src/validate.php');
+
+ /**
+ ** draft_actions.php
+ **
+ ** Copyright (c) 1999-2000 The SquirrelMail development team
+ ** Licensed under the GNU GPL. For full terms see the file COPYING.
+ **
+ **
+ ** $Id$
+ **/
+
+ require_once ('../src/validate.php');
/* Print all the needed RFC822 headers */
function write822HeaderForDraft ($fp, $t, $c, $b, $subject, $more_headers) {
static $header, $headerlength;
if ($header == '') {
- $to = expandAddrs(parseAddrs($t));
- $cc = expandAddrs(parseAddrs($c));
- $bcc = expandAddrs(parseAddrs($b));
- if (isset($identity) && $identity != 'default')
- {
+ if (isset($identity) && ($identity != 'default')) {
$reply_to = getPref($data_dir, $username, 'reply_to' . $identity);
$from = getPref($data_dir, $username, 'full_name' . $identity);
$from_addr = getPref($data_dir, $username, 'email_address' . $identity);
- }
- else
- {
+ } else {
$reply_to = getPref($data_dir, $username, 'reply_to');
$from = getPref($data_dir, $username, 'full_name');
$from_addr = getPref($data_dir, $username, 'email_address');
}
- if ($from_addr == '')
+ if ($from_addr == '') {
$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 == '')
+ if ($from == '') {
$from = "<$from_addr>";
- else
+ } else {
$from = '"' . encodeHeader($from) . "\" <$from_addr>";
+ }
/* This creates an RFC 822 date */
$date = date("D, j M Y H:i:s ", mktime()) . timezone();
$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)) {
}
}
- 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
+ /* Do the MIME-stuff */
$header .= "MIME-Version: 1.0\r\n";
if (isMultipart()) {
return $headerlength;
}
- function saveMessagetoDraft($t, $c, $b, $subject, $body, $reply_id) {
+ // 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);
- $body = ereg_replace("\n\\.", "\n..", $body);
- $body = ereg_replace("^\\.", "..", $body);
-
- $body = ereg_replace("\n", "\r\n", $body);
+ $tmpDraftFile = "draft-" . GenerateRandomString(32, '', 7);
+ while ( file_exists($attachment_dir .$tmpDraftFile) )
+ $tmpDraftFile = "draft-" . GenerateRandomString(32, '', 7);
+ $fp = fopen($attachment_dir . $tmpDraftFile, 'w');
- $fp = fopen("/dev/null", a);
- $headerlength = write822HeaderForDraft ($fp, $t, $c, $b, $subject, $more_headers);
- $bodylength = writeBody ($fp, $body);
- fclose ($fp);
+ $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;
}
?>