Index: trunk/core/kernel/utility/email_send.php =================================================================== diff -u -N -r7855 -r8402 --- trunk/core/kernel/utility/email_send.php (.../email_send.php) (revision 7855) +++ trunk/core/kernel/utility/email_send.php (.../email_send.php) (revision 8402) @@ -1913,27 +1913,51 @@ { if (isset($message)) { // if message is given directly, then use it - $message_headers = Array (); - list ($headers, $message_body) = explode("\n\n", $message, 2); - $headers = explode("\n", $headers); - foreach ($headers as $header) { - $header = explode(':', $header, 2); - $message_headers[ trim($header[0]) ] = trim($header[1]); + if (is_array($message)) { + $message_headers =& $message[0]; + $message_body =& $message[1]; } + else { + $message_headers = Array (); + list ($headers, $message_body) = explode("\n\n", $message, 2); + $headers = explode("\n", $headers); + foreach ($headers as $header) { + $header = explode(':', $header, 2); + $message_headers[ trim($header[0]) ] = trim($header[1]); + } + } $composed = true; } else { // direct message not given, then assemble message from available parts $composed = $this->GetHeadersAndBody($message_headers, $message_body); } - if ($composed && $immediate_send) { - $send_method = 'Send'.$this->sendMethod; - $result = $this->$send_method($message_headers, $message_body); - - if ($immediate_clear) { - $this->Clear(); + if ($composed) { + if ($immediate_send) { + $send_method = 'Send'.$this->sendMethod; + $result = $this->$send_method($message_headers, $message_body); + + if ($immediate_clear) { + $this->Clear(); + } + return $result; } - return $result; + else { + $fields_hash = Array ( + 'ToEmail' => $message_headers['To'], + 'Subject' => $message_headers['Subject'], + 'Queued' => adodb_mktime(), + 'SendRetries' => 0, + 'LastSendRetry' => 0, + ); + $fields_hash['MessageHeaders'] = serialize($message_headers); + $fields_hash['MessageBody'] =& $message_body; + $this->Conn->doInsert($fields_hash, TABLE_PREFIX.'EmailQueue'); + + if ($immediate_clear) { + $this->Clear(); + } + } } // if not immediate send, then send result is positive :)