From 66773789e392305bba4cdf7ed8e6ae3b8380de51 Mon Sep 17 00:00:00 2001 From: svncommit <devs@roundcube.net> Date: Thu, 27 Oct 2005 09:45:33 -0400 Subject: [PATCH] --- program/steps/mail/sendmail.inc | 74 ++++++++++++++++++++++--------------- 1 files changed, 44 insertions(+), 30 deletions(-) diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index 789001e..ddd08f1 100644 --- a/program/steps/mail/sendmail.inc +++ b/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); } -- Gitblit v1.9.1