Source for file compose.php
Documentation is available at compose.php
* Functions for message compositon: writing a message, attaching files etc.
* @author Thijs Kinkhorst <kink at squirrelmail.org>
* @copyright 1999-2020 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: compose.php 14845 2020-01-07 08:09:34Z pdontthink $
* Get a new file to write an attachment to.
* This function makes sure it doesn't overwrite other attachments,
* preventing collisions and race conditions.
* @return filename of the tempfile only (not full path)
$hashed_attachment_dir =
getHashedDir($username, $attachment_dir);
// using PHP >= 4.3.2 we can be truly atomic here
// give up after 1000 tries
for ($try=
0; $try<
$TMP_MAX; ++
$try) {
$full_localfilename =
"$hashed_attachment_dir/$localfilename";
// filename collision. try again
// try to open for (binary) writing
$fp =
@fopen( $full_localfilename, $filemods);
// success! make sure it's not readable, close and return filename
chmod($full_localfilename, 0600);
// we tried 1000 times but didn't succeed.
error_box( _("Could not open temporary file to store attachment. Contact your system administrator to resolve this issue.") );
* 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)
* @param boolean $only_build_message_object When TRUE, only builds the
* intends to send and returns
* it (returned success code
* will be -1 and message ID
* emtpy) (OPTIONAL; default
* @return array A three-element array, the first element being a
* boolean value indicating if the message was successfully
* sent or not, the second element being the message's
* assigned Message-ID, if available (only available as of
* SquirrelMail 1.4.14 and 1.5.2), and the third element
* being the message object itself.
* If $only_build_message_object is TRUE, only the third
* element is useful; first two should be ignored - the
* message is never sent in this case.
function sq_send_mail($to, $subject, $body, $from, $cc=
'', $bcc=
'',
$message=
'', $only_build_message_object=
FALSE)
require_once(SM_PATH .
'functions/mime.php');
require_once(SM_PATH .
'class/mime.class.php');
$message->setBody($body);
$header->encoding =
$special_encoding;
$header->encoding =
'8bit';
$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;
if ($only_build_message_object)
return array(-
1, '', $message);
// ripped from src/compose.php - based on both 1.5.2 and 1.4.14
require_once(SM_PATH .
'class/deliver/Deliver_SMTP.class.php');
$authPop =
(isset
($pop_before_smtp) &&
$pop_before_smtp) ?
true :
false;
if (empty($pop_before_smtp_host)) $pop_before_smtp_host =
$smtpServerAddress;
$stream =
$deliver->initStream($message,$domain,0,
$smtpServerAddress, $smtpPort, $user, $pass, $authPop, $pop_before_smtp_host, $smtp_stream_options);
require_once(SM_PATH .
'class/deliver/Deliver_SendMail.class.php');
// Check for outdated configuration
if (!isset
($sendmail_args)) {
if ($sendmail_path==
'/var/qmail/bin/qmail-inject') {
$sendmail_args =
'-i -t';
$stream =
$deliver->initStream($message,$sendmail_path);
$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, $message);
Documentation generated on Mon, 13 Jan 2020 04:22:09 +0100 by phpDocumentor 1.4.3