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-2018 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: compose.php 14750 2018-01-16 23:44:07Z 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)
* @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=
'')
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;
// 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);
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);
Documentation generated on Tue, 17 Apr 2018 04:22:23 +0200 by phpDocumentor 1.4.3