From 70a4976073135f5c221a121f45f5a551dcd39cde Mon Sep 17 00:00:00 2001 From: pdontthink Date: Fri, 29 Feb 2008 22:42:51 +0000 Subject: [PATCH] Add sq_send_mail() git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@12978 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/compose.php | 108 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/functions/compose.php b/functions/compose.php index ae86552e..753c3888 100644 --- a/functions/compose.php +++ b/functions/compose.php @@ -59,3 +59,111 @@ function sq_get_attach_tempfile() } +/** + * Send a simple mail message using SquirrelMail's API. + * + * Until SquirrelMail is sufficiently redesigned, this + * function is a stand-in for a simple mail delivery + * call. Currently, it only sends plaintext messages + * (unless the caller uses the $message parameter). + * + * @param string $to The destination recipient. + * @param string $subject The message subject. + * @param string $body The message body. + * @param string $from The sender. + * @param string $cc The destination carbon-copy recipient. + * (OPTIONAL; default no Cc:) + * @param string $bcc The destination blind carbon-copy recipient. + * (OPTIONAL; default no Bcc:) + * @param object $message If the caller wants to construct a more + * complicated message themselves and pass + * it here, this function will take care + * of the rest - handing it over to SMTP + * or Sendmail. If this parameter is non- + * empty, all other parameters are ignored. + * (OPTIONAL: default is empty) + * + * @return array A two-element array, the first element being a + * boolean value indicating if the message was successfully + * sent or not, and the second element being the message's + * assigned Message-ID, if available (only available as of + * SquirrelMail 1.4.14 and 1.5.2) + * + */ +function sq_send_mail($to, $subject, $body, $from, $cc='', $bcc='', $message='') +{ + + if (empty($message)) + { + $message = new Message(); + $header = new Rfc822Header(); + + $message->setBody($body); + $content_type = new ContentType('text/plain'); + global $special_encoding, $default_charset; + if ($special_encoding) + $rfc822_header->encoding = $special_encoding; + else + $rfc822_header->encoding = '8bit'; + if ($default_charset) + $content_type->properties['charset']=$default_charset; + $header->content_type = $content_type; + + $header->parseField('To', $to); + $header->parseField('Cc', $cc); + $header->parseField('Bcc', $bcc); + $header->parseField('From', $from); + $header->parseField('Subject', $subject); + $message->rfc822_header = $header; + } +//sm_print_r($message);exit; + + + global $useSendmail; + + + // ripped from src/compose.php - based on both 1.5.2 and 1.4.14 + // + if (!$useSendmail) { + require_once(SM_PATH . 'class/deliver/Deliver_SMTP.class.php'); + $deliver = new Deliver_SMTP(); + global $smtpServerAddress, $smtpPort, $pop_before_smtp, $domain; + + $authPop = (isset($pop_before_smtp) && $pop_before_smtp) ? true : false; + $user = ''; + $pass = ''; + get_smtp_user($user, $pass); + $stream = $deliver->initStream($message,$domain,0, + $smtpServerAddress, $smtpPort, $user, $pass, $authPop); + } else { + require_once(SM_PATH . 'class/deliver/Deliver_SendMail.class.php'); + global $sendmail_path, $sendmail_args; + // Check for outdated configuration + if (!isset($sendmail_args)) { + if ($sendmail_path=='/var/qmail/bin/qmail-inject') { + $sendmail_args = ''; + } else { + $sendmail_args = '-i -t'; + } + } + $deliver = new Deliver_SendMail(array('sendmail_args'=>$sendmail_args)); + $stream = $deliver->initStream($message,$sendmail_path); + } + + + $success = false; + $message_id = ''; + if ($stream) { + $deliver->mail($message, $stream); + if (!empty($message->rfc822_header->message_id)) { + $message_id = $message->rfc822_header->message_id; + } + + $success = $deliver->finalizeStream($stream); + } + + return array($success, $message_id); + +} + + -- 2.25.1