From: lkehresman Date: Wed, 15 Mar 2000 12:41:17 +0000 (+0000) Subject: Saving of sent messages works..kinda X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=commitdiff_plain;h=d17b1a714665bb8817373d5941ca53935944ca8c Saving of sent messages works..kinda git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@305 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/ChangeLog b/ChangeLog index cfbddba9..b91838ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Version 0.4pre1 -- Development +------------------------------ +- It doesn't bail out if PHP wasn't compiled with --with-gettext. + It only uses english in this case. + + + +Version 0.3.1 -- March 13, 2000 +------------------------------- +- Fixed a bug that didn't allow downloading of attachments + Version 0.3 (final) -- March 10, 2000 ------------------------------------- - Fixed bug in smtp.php and made sending RFC complient diff --git a/functions/imap_general.php b/functions/imap_general.php index 166d8765..c97bf43d 100755 --- a/functions/imap_general.php +++ b/functions/imap_general.php @@ -71,20 +71,20 @@ /** Do some error correction **/ if (!$imap_stream) { if (!$hide) { - echo "Error connecting to IMAP server: $imap_server_address.
\n"; - echo "$error_number : $error_string
\n"; + echo "Error connecting to IMAP server: $imap_server_address.
\r\n"; + echo "$error_number : $error_string
\r\n"; } exit; } - fputs ($imap_stream, "a001 LOGIN \"$username\" \"$password\"\n"); + fputs ($imap_stream, "a001 LOGIN \"$username\" \"$password\"\r\n"); $read = fgets ($imap_stream, 1024); /** If the connection was not successful, lets see why **/ if (substr($read, 0, 7) != "a001 OK") { if (!$hide) { if (substr($read, 0, 8) == "a001 BAD") { - echo "Bad request: $read
\n"; + echo "Bad request: $read
\r\n"; exit; } else if (substr($read, 0, 7) == "a001 NO") { ?> @@ -135,7 +135,7 @@ ** Simply logs out the imap session ******************************************************************************/ function sqimap_logout ($imap_stream) { - fputs ($imap_stream, "a001 LOGOUT\n"); + fputs ($imap_stream, "a001 LOGOUT\r\n"); } @@ -144,7 +144,7 @@ ** Returns the delimeter between mailboxes: INBOX/Test, or INBOX.Test... ******************************************************************************/ function sqimap_get_delimiter ($imap_stream) { - fputs ($imap_stream, ". LIST \"\" *\n"); + fputs ($imap_stream, ". LIST \"\" *\r\n"); $read = sqimap_read_data($imap_stream, ".", true, $a, $b); $quote_position = strpos ($read[0], "\""); $delim = substr ($read[0], $quote_position+1, 1); @@ -159,7 +159,7 @@ ** Gets the number of messages in the current mailbox. ******************************************************************************/ function sqimap_get_num_messages ($imap_stream, $mailbox) { - fputs ($imap_stream, "a001 EXAMINE \"$mailbox\"\n"); + fputs ($imap_stream, "a001 EXAMINE \"$mailbox\"\r\n"); $read_ary = sqimap_read_data ($imap_stream, "a001", true, $result, $message); for ($i = 0; $i < count($read_ary); $i++) { if (substr(trim($read_ary[$i]), -6) == EXISTS) { @@ -213,7 +213,7 @@ ** Returns the number of unseen messages in this folder ******************************************************************************/ function sqimap_unseen_messages ($imap_stream, &$num_unseen) { - fputs ($imap_stream, "a001 SEARCH UNSEEN NOT DELETED\n"); + fputs ($imap_stream, "a001 SEARCH UNSEEN NOT DELETED\r\n"); $read_ary = sqimap_read_data ($imap_stream, "a001", true, $result, $message); $unseen = false; @@ -228,4 +228,48 @@ return $unseen; } + + + /****************************************************************************** + ** Saves a message to a given folder -- used for saving sent messages + ******************************************************************************/ + function sqimap_append ($imap_stream, $mailbox, $body, $to, $cc, $bcc, $subject, $data_dir, $username, $domain, $version) { + global $sent_folder, $data_dir; + + $from = getPref($data_dir, $username, "full_name"); + $from_addr = getPref($data_dir, $username, "email_address"); + if ($from_addr == "") + $from_addr = "$username@$domain"; + $to_list = getLineOfAddrs($to); + $cc_list = getLineOfAddrs($cc); + $bcc_list = getLineOfAddrs($bcc); + + if ($from == "") + $from = "<$from_addr>"; + else + $from = $from . " <$from_addr>"; + + $message = "Date: ".date("D, j M Y H:i:s ", mktime()) . timezone() . "\r\n"; + $message .= "Subject: $subject\r\n"; + $message .= "From: $from\r\n"; + $message .= "To: $to_list\r\n"; + if ($cc_list) { + $message .= "Cc: $cc_list\r\n"; // Who the CCs are + } + $message .= "Content-Type: text/plain; charset=ISO-8859-1\r\n"; + $message .= "Content-Transfer-Encoding: 8bit\r\n"; + $message .= "\r\n"; + $message .= "$body\r\n"; + $message .= "\r\n"; + + $size = count_chars($message); + fputs ($imap_stream, "a001 APPEND $sent_folder (\\Seen) \{$size}\r\n"); + fputs ($imap_stream, "$message"); + echo "a001 APPEND $sent_folder (\\Seen) \{$size}
"; + + $read_ary = sqimap_read_data ($imap_stream, "a001", true, $result, $message); + for ($i = 0; $i < count($read_ary); $i++) { + echo $read_ary[$i] . "
"; + } + } ?> diff --git a/functions/smtp.php b/functions/smtp.php index 3c64ecf1..8ddce949 100644 --- a/functions/smtp.php +++ b/functions/smtp.php @@ -356,13 +356,16 @@ function sendMessage($t, $c, $b, $subject, $body) { global $useSendmail; - + global $data_dir, $username, $domain, $key, $version, $sent_folder, $imapServerAddress; +/* if ($useSendmail==true) { sendSendmail($t, $c, $b, $subject, $body); } else { sendSMTP($t, $c, $b, $subject, $body); } - +*/ + $imap_stream = sqimap_login($username, $key, $imapServerAddress, 1); + sqimap_append ($imap_stream, $sent_folder, $body, $t, $c, $b, $subject, $data_dir, $username, $domain, $version); } ?> diff --git a/functions/strings.php b/functions/strings.php index ba2e1376..b40510cf 100644 --- a/functions/strings.php +++ b/functions/strings.php @@ -150,4 +150,20 @@ function replace_escaped_spaces ($string) { return str_replace(" ", " ", $string); } + + function count_chars($string) { + for ($i = 0; $i < strlen($string); $i++) { + $ch = substr($string, $i, 1); + $size++; + if ($ch == "\\") { + $i++; + $ch = substr($string, $i, 1); + if ($ch == "n") + $i--; + if ($ch == "r") + $i--; + } + } + return $size; + } ?>