alecpl
2010-01-25 34b65924b960ac3aff2d1e8f2046764862e929f4
program/steps/mail/sendmail.inc
@@ -151,6 +151,8 @@
// parse email address input
function rcmail_email_input_format($mailto)
{
  global $EMAIL_FORMAT_ERROR;
  $regexp = array('/[,;]\s*[\r\n]+/', '/[\r\n]+/', '/[,;]\s*$/m', '/;/', '/(\S{1})(<\S+@\S+>)/U');
  $replace = array(', ', ', ', '', ',', '\\1 \\2');
@@ -181,8 +183,16 @@
        $address = '<'.$address.'>';
      $result[] = $name.' '.$address;
      $item = $address;
    } else if (trim($item)) {
      // @TODO: handle errors
      continue;
    }
    // check address format
    $item = trim($item, '<>');
    if ($item && !check_email($item)) {
      $EMAIL_FORMAT_ERROR = $item;
      return;
    }
  }
@@ -200,9 +210,16 @@
$input_charset = $OUTPUT->get_charset();
$message_charset = isset($_POST['_charset']) ? $_POST['_charset'] : $input_charset;
$EMAIL_FORMAT_ERROR = NULL;
$mailto = rcmail_email_input_format(get_input_value('_to', RCUBE_INPUT_POST, TRUE, $message_charset));
$mailcc = rcmail_email_input_format(get_input_value('_cc', RCUBE_INPUT_POST, TRUE, $message_charset));
$mailbcc = rcmail_email_input_format(get_input_value('_bcc', RCUBE_INPUT_POST, TRUE, $message_charset));
if ($EMAIL_FORMAT_ERROR) {
  $OUTPUT->show_message('emailformaterror', 'error', array('email' => $EMAIL_FORMAT_ERROR));
  $OUTPUT->send('iframe');
}
if (empty($mailto) && !empty($mailcc)) {
  $mailto = $mailcc;
@@ -445,10 +462,11 @@
$headers = $data['headers'];
// encoding subject header with mb_encode provides better results with asian characters
if (function_exists("mb_encode_mimeheader"))
if (function_exists('mb_encode_mimeheader'))
{
  mb_internal_encoding($message_charset);
  $headers['Subject'] = mb_encode_mimeheader($headers['Subject'], $message_charset, 'Q');
  $headers['Subject'] = mb_encode_mimeheader($headers['Subject'],
    $message_charset, 'Q', $RCMAIL->config->header_delimiter(), 8);
  mb_internal_encoding(RCMAIL_CHARSET);
}
@@ -517,8 +535,9 @@
  // raise error if saving failed
  if (!$saved)
    {
    raise_error(array('code' => 800, 'type' => 'imap', 'file' => __FILE__,
                      'message' => "Could not save message in $store_target"), TRUE, FALSE);
    raise_error(array('code' => 800, 'type' => 'imap',
       'file' => __FILE__, 'line' => __LINE__,
            'message' => "Could not save message in $store_target"), TRUE, FALSE);
    
    if ($savedraft) {
      $OUTPUT->show_message('errorsaving', 'error');
@@ -535,8 +554,9 @@
    // raise error if deletion of old draft failed
    if (!$deleted)
      raise_error(array('code' => 800, 'type' => 'imap', 'file' => __FILE__,
                        'message' => "Could not delete message from ".$CONFIG['drafts_mbox']), TRUE, FALSE);
      raise_error(array('code' => 800, 'type' => 'imap',
          'file' => __FILE__, 'line' => __LINE__,
                'message' => "Could not delete message from ".$CONFIG['drafts_mbox']), TRUE, FALSE);
    }
  }