123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <?php
- /**
- * Deliver_SendMail.class.php
- *
- * @copyright Copyright (c) 1999-2004 The SquirrelMail Project Team
- * Licensed under the GNU GPL. For full terms see the file COPYING.
- *
- * Delivery backend for the Deliver class.
- *
- * @version $Id$
- * @author Marc Groot Koerkamp
- * @package squirrelmail
- */
- /** This of course depends upon Deliver */
- require_once(SM_PATH . 'class/deliver/Deliver.class.php');
-
- /**
- * Delivers messages using the sendmail binary
- * @package squirrelmail
- */
- class Deliver_SendMail extends Deliver {
- /**
- * function preWriteToStream
- *
- * Sendmail needs LF's as line endings instead of CRLF.
- * This function translates the line endings to LF and should be called
- * before each line is written to the stream.
- *
- * @param string $s Line to process
- * @return void
- * @access private
- */
- function preWriteToStream(&$s) {
- if ($s) {
- $s = str_replace("\r\n", "\n", $s);
- }
- }
- /**
- * function initStream
- *
- * Initialise the sendmail connection.
- *
- * @param Message $message Message object containing the from address
- * @param string $sendmail_path Location of sendmail binary
- * @return void
- * @access public
- */
- function initStream($message, $sendmail_path) {
- $rfc822_header = $message->rfc822_header;
- $from = $rfc822_header->from[0];
- $envelopefrom = trim($from->mailbox.'@'.$from->host);
- $envelopefrom = str_replace(array("\0","\n"),array('',''),$envelopefrom);
- if (strstr($sendmail_path, "qmail-inject")) {
- $stream = popen (escapeshellcmd("$sendmail_path -i -f$envelopefrom"), "w");
- } else {
- $stream = popen (escapeshellcmd("$sendmail_path -i -t -f$envelopefrom"), "w");
- }
- return $stream;
- }
- /**
- * function finalizeStream
- *
- * Close the stream.
- *
- * @param resource $stream
- * @return boolean
- * @access public
- */
- function finalizeStream($stream) {
- pclose($stream);
- return true;
- }
- /**
- * function getBcc
- *
- * In case of sendmail, the rfc822header must contain the bcc header.
- *
- * @return boolean true if rfc822header should include the bcc header.
- * @access private
- */
- function getBcc() {
- return true;
- }
-
- /**
- * function clean_crlf
- *
- * Cleans each line to only end in a LF
- * Returns the length of the line including a CR,
- * so that length is correct when the message is saved to imap
- * Implemented to fix sendmail->postfix rejection of messages with
- * attachments because of stray LF's
- *
- * @param string $s string to strip of CR's
- * @return integer length of string including a CR for each LF
- * @access private
- */
- function clean_crlf(&$s) {
- $s = str_replace("\r\n", "\n", $s);
- $s = str_replace("\r", "\n", $s);
- $s2 = str_replace("\n", "\r\n", $s);
- return strlen($s2);
- }
-
- }
- ?>
|