summaryrefslogtreecommitdiff
path: root/program/steps
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2006-12-06 21:37:37 +0000
committerthomascube <thomas@roundcube.net>2006-12-06 21:37:37 +0000
commitb517af4a471283adc62ef82cb30b97e896bb6799 (patch)
tree615ba4f02d3e1c3a193f7e2dfcf0d608c14aa7e3 /program/steps
parentb25766b1b3b37d31f74c8b6bf320b07107917a8d (diff)
Optimized memory usage when sending mail; Include SMTP response in log; Fixed wrong header encoding
Diffstat (limited to 'program/steps')
-rw-r--r--program/steps/mail/sendmail.inc20
1 files changed, 13 insertions, 7 deletions
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 41735881c..98f413c85 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -167,7 +167,7 @@ if (empty($identity_arr['string']))
// compose headers array
$headers = array('Date' => date('D, j M Y H:i:s O'),
- 'From' => $identity_arr['string'],
+ 'From' => rcube_charset_convert($identity_arr['string'], $CHARSET, $message_charset),
'To' => rcube_charset_convert($mailto, $input_charset, $message_charset));
// additional recipients
@@ -295,12 +295,17 @@ $message_param = array('text_encoding' => $transfer_encoding,
'text_charset' => $message_charset);
// compose message body and get headers
-$msg_body = &$MAIL_MIME->get($message_param);
+$msg_body = $MAIL_MIME->get($message_param);
+// unset to save memory.
+unset($MAIL_MIME->_parts);
$msg_subject = $headers['Subject'];
if ($MBSTRING && function_exists("mb_encode_mimeheader"))
- $headers['Subject'] = mb_encode_mimeheader($headers['Subject'], $message_charset);
+{
+ mb_internal_encoding($CHARSET);
+ $headers['Subject'] = mb_encode_mimeheader($headers['Subject'], $message_charset, 'Q');
+}
// Begin SMTP Delivery Block
if (!$savedraft) {
@@ -324,7 +329,8 @@ if (!$savedraft) {
$header_str = $MAIL_MIME->txtHeaders($send_headers);
// send message
- $sent = smtp_mail($from, $a_recipients, $header_str, $msg_body);
+ $smtp_response = array();
+ $sent = smtp_mail($from, $a_recipients, $header_str, $msg_body, $smtp_response);
// log error
if (!$sent)
@@ -333,7 +339,7 @@ if (!$savedraft) {
'type' => 'smtp',
'line' => __LINE__,
'file' => __FILE__,
- 'message' => "SMTP error: $SMTP_ERROR"), TRUE, FALSE);
+ 'message' => "SMTP error: ".join("\n", $smtp_response)), TRUE, FALSE);
}
}
@@ -446,12 +452,12 @@ else
{
if ($CONFIG['smtp_log'])
{
- $log_entry = sprintf("[%s] User: %d on %s; Message for %s; Subject: %s\n",
+ $log_entry = sprintf("[%s] User: %d on %s; Message for %s; %s\n",
date("d-M-Y H:i:s O", mktime()),
$_SESSION['user_id'],
$_SERVER['REMOTE_ADDR'],
$mailto,
- $msg_subject);
+ !empty($smtp_response) ? join('; ', $smtp_response) : '');
if ($fp = @fopen($CONFIG['log_dir'].'/sendmail', 'a'))
{