* a delivery backend.
*
* @author Marc Groot Koerkamp
- * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @copyright © 1999-2007 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
}
$last = $body_part;
} elseif ($message->att_local_name) {
+ global $username, $attachment_dir;
+ $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
$filename = $message->att_local_name;
- $file = fopen ($filename, 'rb');
+ $file = fopen ($hashed_attachment_dir . '/' . $filename, 'rb');
while ($body_part = fgets($file, 4096)) {
// remove NUL characters
$body_part = str_replace("\0",'',$body_part);
$this->writeToStream($stream, $body_part);
}
} elseif ($message->att_local_name) {
+ global $username, $attachment_dir;
+ $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
$filename = $message->att_local_name;
- $file = fopen ($filename, 'rb');
+ $file = fopen ($hashed_attachment_dir . '/' . $filename, 'rb');
while ($tmp = fread($file, 570)) {
$body_part = chunk_split(base64_encode($tmp));
// Up to 4.3.10 chunk_split always appends a newline,
* @return string $header
*/
function prepareRFC822_Header($rfc822_header, $reply_rfc822_header, &$raw_length) {
- global $domain, $version, $username, $encode_header_key,
+ global $domain, $username, $encode_header_key,
$edit_identity, $hide_auth_header;
/* if server var SERVER_NAME not available, use $domain */
$rn = "\r\n";
/* This creates an RFC 822 date */
- $date = date('D, j M Y H:i:s ', mktime()) . $this->timezone();
+ $date = date('D, j M Y H:i:s ', time()) . $this->timezone();
/* Create a message-id */
$message_id = '<' . $REMOTE_PORT . '.';
if (isset($encode_header_key) && trim($encode_header_key)!='') {
*
* Add $hide_squirrelmail_header as a candidate for config_local.php
* to allow completely hiding SquirrelMail participation in message
- * processing; This is dangerous, especially if users can modify their
+ * processing; This is dangerous, especially if users can modify their
* account information, as it makes mapping a sent message back to the
* original sender almost impossible.
*/
}
}
/* Identify SquirrelMail */
- $header[] = 'User-Agent: SquirrelMail/' . $version . $rn;
+ $header[] = 'User-Agent: SquirrelMail/' . SM_VERSION . $rn;
/* Do the MIME-stuff */
$header[] = 'MIME-Version: 1.0' . $rn;
$contenttype = 'Content-Type: '. $rfc822_header->content_type->type0 .'/'.
if ($encoding = $rfc822_header->encoding) {
$header[] = 'Content-Transfer-Encoding: ' . $encoding . $rn;
}
- if ($rfc822_header->dnt) {
+ if (isset($rfc822_header->dnt) && $rfc822_header->dnt) {
$dnt = $rfc822_header->getAddr_s('dnt');
/* Pegasus Mail */
$header[] = 'X-Confirm-Reading-To: '.$dnt. $rn;
$aRefs = explode(' ',$sRefs);
$sLine = 'References:';
foreach ($aRefs as $sReference) {
- if (strlen($sLine)+strlen($sReference) >76) {
+ if ( trim($sReference) == '' ) {
+ /* Don't add spaces. */
+ } elseif (strlen($sLine)+strlen($sReference) >76) {
$hdr_s .= $sLine;
$sLine = $rn . ' ' . $sReference;
} else {
$aReferences = preg_split('/\s+/', $hdr->references);
$message_id = $hdr->message_id;
$in_reply_to = $hdr->in_reply_to;
-
+
// if References already exists, add the current message ID at the end.
// no References exists; if we know a IRT, add that aswell
if (count($aReferences) == 0 && $in_reply_to) {
$aReferences[] = $message_id;
// sanitize the array: trim whitespace, remove dupes
- array_walk($aReferences, 'trim_value');
+ array_walk($aReferences, 'sq_trim_value');
$aReferences = array_unique($aReferences);
while ( count($aReferences) > 4 && strlen(implode(' ', $aReferences)) >= 986 ) {
return implode(' ', $aReferences);
}
- /**
- * Callback function to trim whitespace from a value, to be used in array_walk
- */
- function trim_value ( &$value ) {
- $value = trim($value);
- }
-
/**
* Converts ip address to hexadecimal string
*
return $ret;
}
}
-
-?>