thomascube
2005-12-14 749b07c78a29b03c63812c3ec3630b16db4baa8f
program/steps/mail/sendmail.inc
@@ -28,7 +28,7 @@
if (!isset($_SESSION['compose']['id']))
  {
  $_action = 'list';
  rcmail_overwrite_action('list');
  return;
  }
@@ -46,7 +46,7 @@
                            FROM ".get_table_name('identities')."
                            WHERE  identity_id=?
                            AND    user_id=?
                            AND    del<>'1'",
                            AND    del<>1",
                            $id,$_SESSION['user_id']);
                                   
  if ($DB->num_rows($sql_result))
@@ -65,8 +65,21 @@
/****** check submission and compose message ********/
$mailto_regexp = array('/,\s*[\r\n]+/', '/[\r\n]+/', '/,\s*$/m');
$mailto_replace = array(' ', ', ', '');
if (empty($_POST['_to']) && empty($_POST['_subject']) && $_POST['_message'])
  {
  show_message("sendingfailed", 'error');
  rcmail_overwrite_action('compose');
  return;
  }
// set default charset
if (empty($CHARSET))
  $CHARSET = 'ISO-8859-1';
$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']));
@@ -129,8 +142,24 @@
  $headers['User-Agent'] = $CONFIG['useragent'];
// append generic footer to all messages
if (!empty($CONFIG['generic_message_footer']))
  {
  $file = realpath($CONFIG['generic_message_footer']);
  if($fp = fopen($file, 'r'))
    {
    $content = fread($fp, filesize($file));
    fclose($fp);
    $_POST['_message'] .= "\r\n" . $content;
    }
  }
// use the configured delimiter for headers
$header_delm = $rcmail_config['mail_header_delimiter'] ? $rcmail_config['mail_header_delimiter'] : "\r\n";
// create PEAR::Mail_mime instance
$MAIL_MIME = new Mail_mime();
$MAIL_MIME = new Mail_mime($header_delm);
$MAIL_MIME->setTXTBody(stripslashes($_POST['_message']), FALSE, TRUE);
//$MAIL_MIME->setTXTBody(wordwrap(stripslashes($_POST['_message'])), FALSE, TRUE);
@@ -146,13 +175,16 @@
  foreach ($_FILES['_attachments']['tmp_name'] as $i => $filepath)
    $MAIL_MIME->addAttachment($filepath, $files['type'][$i], $files['name'][$i], TRUE);
$message_charset = isset($_POST['_charset']) ? $_POST['_charset'] : $CHARSET;
// encoding settings for mail composing
$message_param = array('text_encoding' => '7bit',
                       'html_encoding' => 'quoted-printable',
                       'head_encoding' => 'quoted-printable',
                       'head_charset'  => 'ISO-8859-1',
                       'html_charset'  => 'ISO-8859-1',
                       'text_charset'  => 'ISO-8859-1');
                       'head_charset'  => $message_charset,
                       'html_charset'  => $message_charset,
                       'text_charset'  => $message_charset);
// compose message body and get headers
$msg_body = $MAIL_MIME->get($message_param);
@@ -206,9 +238,8 @@
// return to compose page if sending failed
if (!$sent)
  {
  $_action = 'compose';
  $OUTPUT->add_script(sprintf("\n%s.set_env('action', '%s');", $JS_OBJECT_NAME, $_action));
  show_message("sendingfailed", 'error'); 
  rcmail_overwrite_action('compose');
  return;
  }
@@ -246,13 +277,14 @@
// log mail sending
if ($CONFIG['smtp_log'])
  {
  $log_entry = sprintf("[%s] User: %d; Message for %s; Subject: %s\n",
  $log_entry = sprintf("[%s] User: %d on %s; Message for %s; Subject: %s\n",
               date("d-M-Y H:i:s O", mktime()),
               $_SESSION['user_id'],
               $_SERVER['REMOTE_ADDR'],
               $mailto,
               $msg_subject);
  if ($fp = fopen($INSTALL_PATH.'logs/sendmail', 'a'))
  if ($fp = @fopen($CONFIG['log_dir'].'/sendmail', 'a'))
    {
    fwrite($fp, $log_entry);
    fclose($fp);