From cead5c727147faac362e742aa7bcecf07f68cd99 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 18 May 2006 17:24:42 -0400
Subject: [PATCH] Updated CHANGELOG

---
 program/steps/mail/sendmail.inc |   69 ++++++++++++++++++++--------------
 1 files changed, 40 insertions(+), 29 deletions(-)

diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index a520a50..65365ea 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -39,7 +39,7 @@
 
 function rcmail_get_identity($id)
   {
-  global $DB;
+  global $DB, $CHARSET, $OUTPUT;
   
   // get identity record
   $sql_result = $DB->query("SELECT *, email AS mailto
@@ -53,7 +53,9 @@
     {
     $sql_arr = $DB->fetch_assoc($sql_result);
     $out = $sql_arr;
-    $out['string'] = sprintf('%s <%s>', $sql_arr['name'], $sql_arr['mailto']);
+    $out['string'] = sprintf('%s <%s>',
+                             rcube_charset_convert($sql_arr['name'], $CHARSET, $OUTPUT->get_charset()),
+                             $sql_arr['mailto']);
     return $out;
     }
 
@@ -74,17 +76,14 @@
 
 
 // set default charset
-if (empty($CHARSET))
-  $CHARSET = 'ISO-8859-1';
-
-$input_charset = $CHARSET;
+$input_charset = $OUTPUT->get_charset();
 $message_charset = isset($_POST['_charset']) ? $_POST['_charset'] : $input_charset;
 
 $mailto_regexp = array('/[,;]\s*[\r\n]+/', '/[\r\n]+/', '/[,;]\s*$/m');
 $mailto_replace = array(', ', ', ', '');
 
 // repalce new lines and strip ending ', '
-$mailto = preg_replace($mailto_regexp, $mailto_replace, stripslashes($_POST['_to']));
+$mailto = preg_replace($mailto_regexp, $mailto_replace, get_input_value('_to', RCUBE_INPUT_POST, TRUE, $message_charset));
 
 // decode address strings
 $to_address_arr = $IMAP->decode_address_list($mailto);
@@ -105,22 +104,22 @@
                  'To'   => rcube_charset_convert($mailto, $input_charset, $message_charset));
 
 // additional recipients
-if ($_POST['_cc'])
-  $headers['Cc'] = rcube_charset_convert(preg_replace($mailto_regexp, $mailto_replace, stripslashes($_POST['_cc'])), $input_charset, $message_charset);
+if (!empty($_POST['_cc']))
+  $headers['Cc'] = preg_replace($mailto_regexp, $mailto_replace, get_input_value('_cc', RCUBE_INPUT_POST, TRUE, $message_charset));
 
-if ($_POST['_bcc'])
-  $headers['Bcc'] = rcube_charset_convert(preg_replace($mailto_regexp, $mailto_replace, stripslashes($_POST['_bcc'])), $input_charset, $message_charset);
+if (!empty($_POST['_bcc']))
+  $headers['Bcc'] = preg_replace($mailto_regexp, $mailto_replace, get_input_value('_bcc', RCUBE_INPUT_POST, TRUE, $message_charset));
   
-if (strlen($identity_arr['bcc']))
+if (!empty($identity_arr['bcc']))
   $headers['Bcc'] = ($headers['Bcc'] ? $headers['Bcc'].', ' : '') . $identity_arr['bcc'];
 
 // add subject
-$headers['Subject'] = rcube_charset_convert(trim($_POST['_subject']), $input_charset, $message_charset);
+$headers['Subject'] = trim(get_input_value('_subject', RCUBE_INPUT_POST, FALSE, $message_charset));
 
-if (strlen($identity_arr['organization']))
+if (!empty($identity_arr['organization']))
   $headers['Organization'] = $identity_arr['organization'];
 
-if (strlen($identity_arr['reply-to']))
+if (!empty($identity_arr['reply-to']))
   $headers['Reply-To'] = $identity_arr['reply-to'];
 
 if (!empty($_SESSION['compose']['reply_msgid']))
@@ -129,7 +128,7 @@
 if (!empty($_SESSION['compose']['references']))
   $headers['References'] = $_SESSION['compose']['references'];
 
-if ($_POST['_priority'])
+if (!empty($_POST['_priority']))
   {
   $priority = (int)$_POST['_priority'];
   $a_priorities = array(1=>'lowest', 2=>'low', 4=>'high', 5=>'highest');
@@ -137,16 +136,21 @@
     $headers['X-Priority'] = sprintf("%d (%s)", $priority, ucfirst($str_priority));
   }
 
+if (!empty($_POST['_receipt']))
+  {
+  $headers['Return-Receipt-To'] = $identity_arr['string'];
+  $headers['Disposition-Notification-To'] = $identity_arr['string'];
+  }
 
 // additional headers
 $headers['Message-ID'] = $message_id;
 $headers['X-Sender'] = $from;
 
-if ($CONFIG['useragent'])
+if (!empty($CONFIG['useragent']))
   $headers['User-Agent'] = $CONFIG['useragent'];
 
 // fetch message body
-$message_body = rcube_charset_convert($_POST['_message'], $input_charset, $message_charset);
+$message_body = get_input_value('_message', RCUBE_INPUT_POST, TRUE, $message_charset);
 
 // append generic footer to all messages
 if (!empty($CONFIG['generic_message_footer']))
@@ -160,9 +164,16 @@
     }
   }
 
-
+// try to autodetect operating system and use the correct line endings
 // use the configured delimiter for headers
-$header_delm = $rcmail_config['mail_header_delimiter'] ? $rcmail_config['mail_header_delimiter'] : "\r\n";
+if (!empty($CONFIG['mail_header_delimiter']))
+  $header_delm = $CONFIG['mail_header_delimiter'];
+else if (strtolower(substr(PHP_OS, 0, 3)=='win')) 
+  $header_delm = "\r\n";
+else if (strtolower(substr(PHP_OS, 0, 3)=='mac'))
+  $header_delm = "\r\n";
+else    
+  $header_delm = "\n";
 
 // create PEAR::Mail_mime instance
 $MAIL_MIME = new Mail_mime($header_delm);
@@ -198,9 +209,9 @@
 $msg_body = $MAIL_MIME->get($message_param);
 
 $msg_subject = $headers['Subject'];
-global $MBSTRING;
-if ($MBSTRING&&function_exists( "mb_encode_mimeheader"))
-  $headers['Subject'] = mb_encode_mimeheader( $headers['Subject'],$message_charset);
+
+if ($MBSTRING && function_exists("mb_encode_mimeheader"))
+  $headers['Subject'] = mb_encode_mimeheader($headers['Subject'], $message_charset);
 
 // send thru SMTP server using cusotm SMTP library
 if ($CONFIG['smtp_server'])
@@ -238,15 +249,15 @@
 else
   {
   // unset some headers because they will be added by the mail() function
-  $headers_php = $MAIL_MIME->_headers;
   $headers_enc = $MAIL_MIME->headers($headers);
+  $headers_php = $MAIL_MIME->_headers;
   unset($headers_php['To'], $headers_php['Subject']);
-
+  
   // reset stored headers and overwrite
   $MAIL_MIME->_headers = array();
   $header_str = $MAIL_MIME->txtHeaders($headers_php);
 
-  if(ini_get('safe_mode'))
+  if (ini_get('safe_mode'))
     $sent = mail($headers_enc['To'], $headers_enc['Subject'], $msg_body, $header_str);
   else
     $sent = mail($headers_enc['To'], $headers_enc['Subject'], $msg_body, $header_str, "-f$from");
@@ -275,12 +286,12 @@
 
   // check if mailbox exists
   if (!in_array_nocase($CONFIG['sent_mbox'], $IMAP->list_mailboxes()))
-    $mbox = $IMAP->create_mailbox($CONFIG['sent_mbox'], TRUE);
+    $sent_folder = $IMAP->create_mailbox($CONFIG['sent_mbox'], TRUE);
   else
-    $mbox = TRUE;
+    $sent_folder = TRUE;
 
   // append message to sent box
-  if ($mbox)
+  if ($sent_folder)
     $saved = $IMAP->save_message($CONFIG['sent_mbox'], $header_str."\r\n".$msg_body);
 
   // raise error if saving failed

--
Gitblit v1.9.1