svncommit
2005-10-26 43fa235da354c8b53aa69ba745c1d398a758fcaf
program/steps/mail/sendmail.inc
@@ -6,7 +6,7 @@
 |                                                                       |
 | This file is part of the RoundCube Webmail client                     |
 | Copyright (C) 2005, RoundCube Dev. - Switzerland                      |
 | All rights reserved.                                                  |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Compose a new mail message with all headers and attachments         |
@@ -21,7 +21,8 @@
*/
require_once('lib/smtp.inc');
//require_once('lib/smtp.inc');
require_once('include/rcube_smtp.inc');
require_once('Mail/mime.php');
@@ -41,14 +42,12 @@
  global $DB;
  
  // get identity record
  $sql_result = $DB->query(sprintf("SELECT *, email AS mailto
                                    FROM   %s
                                    WHERE  identity_id=%d
                                    AND    user_id=%d
                                    AND    del!='1'",
                                   get_table_name('identities'),
                                   $id,
                                   $_SESSION['user_id']));
  $sql_result = $DB->query("SELECT *, email AS mailto
                            FROM ".get_table_name('identities')."
                            WHERE  identity_id=?
                            AND    user_id=?
                            AND    del<>'1'",
                            $id,$_SESSION['user_id']);
                                   
  if ($DB->num_rows($sql_result))
    {
@@ -146,39 +145,44 @@
  foreach ($_FILES['_attachments']['tmp_name'] as $i => $filepath)
    $MAIL_MIME->addAttachment($filepath, $files['type'][$i], $files['name'][$i], TRUE);
// 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');
// compose message body and get headers
$msg_body = $MAIL_MIME->get();
$msg_body = $MAIL_MIME->get($message_param);
$msg_subject = $headers['Subject'];
// send thru SMTP server using cusotm SMTP library
if ($CONFIG['smtp_server'])
  {
  // connect to SMTP server
  $smtp_conn = smtp_connect($CONFIG['smtp_server'], '25', $CONFIG['smtp_user'], $CONFIG['smtp_pass']);
  if ($smtp_conn)
    {
    // generate list of recipients
    $recipients = $mailto.', '.$headers['Cc'].', '.$headers['Bcc'];
    $a_recipients = smtp_expand($recipients);
  // generate list of recipients
  $a_recipients = array($mailto);
    // generate message headers
    $header_str = $MAIL_MIME->txtHeaders($headers);
    // send message
    $sent = smtp_mail($smtp_conn, $from, $a_recipients, $header_str."\r\n".$msg_body, FALSE);
   }
  if (strlen($headers['Cc']))
    $a_recipients[] = $headers['Cc'];
  if (strlen($headers['Bcc']))
    $a_recipients[] = $headers['Bcc'];
  // generate message headers
  $header_str = $MAIL_MIME->txtHeaders($headers);
  // send message
  $sent = smtp_mail($from, $a_recipients, $header_str, $msg_body);
  // log error
  if (!$smtp_conn || !$sent)
  if (!$sent)
    {
    raise_error(array('code' => 800,
                      'type' => 'smtp',
                      'line' => __LINE__,
                      'file' => __FILE__,
                      'message' => "Connection failed: $smtp_error"), TRUE, FALSE);
                      'message' => "SMTP error: $SMTP_ERROR"), TRUE, FALSE);
    }
  }
@@ -217,10 +221,20 @@
  // check if mailbox exists
  if (!in_array_nocase($CONFIG['sent_mbox'], $IMAP->list_mailboxes()))
    $IMAP->create_mailbox($CONFIG['sent_mbox'], TRUE);
    $mbox = $IMAP->create_mailbox($CONFIG['sent_mbox'], TRUE);
  else
    $mbox = TRUE;
  // append message to sent box
  $saved = $IMAP->save_message($CONFIG['sent_mbox'], $header_str."\r\n".$msg_body);
  if ($mbox)
    $saved = $IMAP->save_message($CONFIG['sent_mbox'], $header_str."\r\n".$msg_body);
  // raise error if saving failed
  if (!$saved)
    raise_error(array('code' => 800,
                      'type' => 'imap',
                      'file' => __FILE__,
                      'message' => "Could not save message in $CONFIG[sent_mbox]"), TRUE, FALSE);
  }