Made MIME much more efficient
[squirrelmail.git] / src / download.php
1 <?
2 include("../config/config.php");
3 include("../functions/strings.php");
4 include("../functions/page_header.php");
5 include("../functions/imap.php");
6 include("../functions/mime.php");
7 include("../functions/mailbox.php");
8 include("../functions/date.php");
9
10 function viewText($color, $body, $id, $entid, $mailbox) {
11 echo "<HTML><BODY TEXT=\"$color[8]\" BGCOLOR=\"$color[4]\" LINK=\"$color[7]\" VLINK=\"$color[7]\" ALINK=\"$color[7]\">\n";
12 displayPageHeader($color, "None");
13
14 echo "<BR><TABLE WIDTH=90% BORDER=0 CELLSPACING=0 CELLPADDING=2 ALIGN=CENTER><TR><TD BGCOLOR=\"$color[0]\">";
15 echo "<B><CENTER>Viewing a plain text attachment</CENTER></B>";
16 echo "</TD></TR><TR><TD BGCOLOR=\"$color[4]\">";
17 $urlmailbox = urlencode($mailbox);
18 echo "<FONT FACE=\"Arial, Helvetica\"><A HREF=\"../src/download.php?absolute_dl=true&passed_id=$id&passed_ent_id=$entid&mailbox=$urlmailbox\">Download this as a file</A><BR><BR></FONT><TT>";
19 echo nl2br($body);
20 echo "</TT></TD></TR></TABLE>";
21 }
22
23 $imapConnection = loginToImapServer($username, $key, $imapServerAddress);
24 selectMailbox($imapConnection, $mailbox, $numMessages);
25
26 // $message contains all information about the message
27 // including header and body
28 $message = fetchMessage($imapConnection, $passed_id, $mailbox);
29
30 $type0 = $message["ENTITIES"][$passed_ent_id]["TYPE0"];
31 $type1 = $message["ENTITIES"][$passed_ent_id]["TYPE1"];
32 $filename = $message["ENTITIES"][$passed_ent_id]["FILENAME"];
33
34 if (strlen($filename) < 1) {
35 $filename = "message" . time();
36 }
37
38 if ($absolute_dl == "true") {
39 switch($type0) {
40 case "text":
41 $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]);
42 header("Content-type: $type0/$type1");
43 header("Content-Disposition: attachment; filename=\"$filename\"");
44 if ($type1 != "html")
45 echo nl2br($body);
46 break;
47 default:
48 $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]);
49 header("Content-type: $type0/$type1");
50 header("Content-Disposition: attachment; filename=\"$filename\"");
51 echo $body;
52 break;
53 }
54 } else {
55 switch ($type0) {
56 case "text":
57 $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]);
58 viewText($color, $body, $passed_id, $passed_ent_id, $mailbox);
59 break;
60 case "message":
61 $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]);
62 viewText($color, $body, $passed_id, $passed_ent_id, $mailbox);
63 break;
64 default:
65 $body = decodeBody($message["ENTITIES"][$passed_ent_id]["BODY"], $message["ENTITIES"][$passed_ent_id]["ENCODING"]);
66 header("Content-type: $type0/$type1");
67 header("Content-Disposition: attachment; filename=\"$filename\"");
68 echo $body;
69 break;
70 }
71 }
72
73 fputs($imapConnection, "1 logout\n");
74 ?>