**
** $Id$
**/
+
+ if (defined('mime_php'))
+ return;
+ define('mime_php', true);
+ global $debug_mime;
$debug_mime = false;
- $mime_php = true;
-
- if (!isset($i18n_php))
- include "../functions/i18n.php";
- if (!isset($imap_php))
- include "../functions/imap.php";
- if (!isset($config_php))
- include "../config/config.php";
-
+
+ include "../functions/i18n.php";
+ include "../functions/imap.php";
+ include "../config/config.php";
/** Setting up the objects that have the structure for the message **/
// figures out what entity to display and returns the $message object
// for that entity.
- function findDisplayEntity ($message, $next = 'none')
+ function findDisplayEntity ($message, $textOnly = 1, $next = 'none')
{
global $show_html_default;
if (! $message)
- return;
+ return 0;
// Show text/plain or text/html -- the first one we find.
if ($message->header->type0 == 'text' &&
($message->header->type1 == 'plain' ||
- $message->header->type2 == 'html'))
+ $message->header->type1 == 'html'))
{
// If the next part is an HTML version, this will
// all be true. Show it, if the user so desires.
// HTML mails this way all have entity_id of 2. 1 = text/plain
if ($next != 'none' &&
+ $textOnly == 0 &&
$next->header->type0 == "text" &&
$next->header->type1 == "html" &&
- $next->header->entity_id == 2 &&
+ ($next->header->entity_id == 2 ||
+ $next->header->entity_id == 1.2) &&
$message->header->type1 == "plain" &&
isset($show_html_default) &&
$show_html_default)
}
else
{
- for ($i=0; $message->entities[$i]; $i++)
+ for ($i=0; isset($message->entities[$i]); $i++)
{
$next = 'none';
if (isset($message->entities[$i + 1]))
$next = $message->entities[$i + 1];
- $entity = findDisplayEntity($message->entities[$i], $next);
+ $entity = findDisplayEntity($message->entities[$i],
+ $textOnly, $next);
if ($entity != 0)
return $entity;
}
$urlmailbox = urlencode($message->header->mailbox);
// Get the right entity and redefine message to be this entity
- $ent_num = findDisplayEntity ($message);
+ // Pass the 0 to mean that we want the 'best' viewable one
+ $ent_num = findDisplayEntity ($message, 0);
$body_message = getEntity($message, $ent_num);
if (($body_message->header->type0 == "text") ||
($body_message->header->type0 == "rfc822")) {
translateText($body, $wrap_at, $body_message->header->charset);
}
- $body .= "<SMALL><CENTER><A HREF=\"../src/download.php?absolute_dl=true&passed_id=$id&passed_ent_id=$ent_num&mailbox=$urlmailbox\">". _("Download this as a file") ."</A></CENTER><BR></SMALL>";
+ $body .= "<SMALL><CENTER><A HREF=\"../src/download.php?absolute_dl=true&passed_id=$id&passed_ent_id=$ent_num&mailbox=$urlmailbox&showHeaders=1\">". _("Download this as a file") ."</A></CENTER><BR></SMALL>";
/** Display the ATTACHMENTS: message if there's more than one part **/
$body .= "</TD></TR></TABLE>";
if (isset($message->entities[0])) {
$body .= formatAttachments ($message, $ent_num, $message->header->mailbox, $id);
}
+ $body .= "</TD></TR></TABLE>";
} else {
- $body .= formatAttachments ($message, -1, $message->header->mailbox, $id);
+ $body = formatAttachments ($message, -1, $message->header->mailbox, $id);
}
return $body;
}
$replace = ereg_replace("_", " ", $res[3]);
// Convert lowercase Quoted Printable to uppercase for
// quoted_printable_decode to understand it.
- while (ereg("(=([0-9][abcdef])|([abcdef][0-9])|([abcdef][abcdef]))", $replace, $res)) {
+ while (ereg("(=(([0-9][abcdef])|([abcdef][0-9])|([abcdef][abcdef])))", $replace, $res)) {
$replace = str_replace($res[1], strtoupper($res[1]), $replace);
}
$replace = quoted_printable_decode($replace);
$replace = charset_decode ($res[1], $replace);
- $string = eregi_replace
- ('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=',
+ // Remove the name of the character set.
+ $string = eregi_replace ('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=',
$replace, $string);
+
// In case there should be more encoding in the string: recurse
return (decodeHeader($string));
} else
// Encode only if the string contains 8-bit characters or =?
if (ereg("([\200-\377]|=\\?)", $string)) {
- $newstring = "=?$default_charset?Q?";
// First the special characters
$string = str_replace("=", "=3D", $string);
$replace = chr($ch);
$insert = sprintf("=%02X", $ch);
$string = str_replace($replace, $insert, $string);
- $ch++;
}
$newstring = "=?$default_charset?Q?".$string."?=";