|
@@ -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);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|