$length = 0;
if (isMultipart()) {
- reset($attachments);
- while (list($localname, $remotename) = each($attachments)) {
- // This is to make sure noone is giving a filename in another
- // directory
- $localname = ereg_replace ("\\/", '', $localname);
-
- $fileinfo = fopen ($attachment_dir.$localname.'.info', 'r');
- $filetype = fgets ($fileinfo, 8192);
- fclose ($fileinfo);
- $filetype = trim ($filetype);
- if ($filetype=='')
+ foreach ($attachments as $info)
+ {
+ $filetype = $info['type'];
+ if ($filetype == '')
$filetype = 'application/octet-stream';
$header = '--'.mimeBoundary()."\r\n";
- $header .= "Content-Type: $filetype;name=\"$remotename\"\r\n";
- $header .= "Content-Disposition: attachment; filename=\"$remotename\"\r\n";
+ $header .= "Content-Type: $filetype; name=\"" .
+ $info['remotefilename'] . "\"\r\n";
+ $header .= "Content-Disposition: attachment; filename=\"" .
+ $info['remotefilename'] . "\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n\r\n";
fputs ($fp, $header);
$length += strlen($header);
- $file = fopen ($attachment_dir.$localname, 'r');
+ $file = fopen ($attachment_dir . $info['localfilename'], 'r');
while ($tmp = fread($file, 570)) {
$encoded = chunk_split(base64_encode($tmp));
$length += strlen($encoded);
}
sqimap_logout($imap_stream);
// Delete the files uploaded for attaching (if any).
- deleteAttachments();
+ ClearAttachments();
}
?>
include("../src/load_prefs.php");
if (!isset($attachments))
+ {
$attachments = array();
+ session_register('attachments');
+ }
// This function is used when not sending or adding attachments
function newMail () {
function getAttachments($message) {
global $mailbox, $attachments, $attachment_dir, $imapConnection,
$ent_num, $forward_id;
-
+
if (!$message) {
sqimap_mailbox_select($imapConnection, $mailbox);
$message = sqimap_get_message($imapConnection, $forward_id,
$filename = "untitled-".$message->header->entity_id;
$localfilename = GenerateRandomString(32, '', 7);
- while (isset($attachments[$localfilename]))
+ while (file_exists($attachment_dir . $localfilename))
$localfilename = GenerateRandomString(32, '', 7);
-
- // Write File Info
- $fp = fopen ($attachment_dir.$localfilename.".info", "w");
- fputs ($fp, strtolower($message->header->type0)."/".
- strtolower($message->header->type1)."\n".$filename."\n");
- fclose ($fp);
+
+ $newAttachment['localfilename'] = $localfilename;
+ $newAttachment['remotefilename'] = $filename;
+ $newAttachment['type0'] = strtolower($message->header->type0 .
+ '/' . $message->header->type1);
// Write Attachment to file
- $fp = fopen ($attachment_dir.$localfilename, "w");
+ $fp = fopen ($attachment_dir.$localfilename, 'w');
fputs ($fp, decodeBody(mime_fetch_body($imapConnection,
$forward_id, $message->header->entity_id),
$message->header->encoding));
fclose ($fp);
- $attachments[$localfilename] = $filename;
+ $attachments[] = $newAttachment;
}
} else {
for ($i = 0; $i < count($message->entities); $i++) {
printf(" <INPUT TYPE=text NAME=subject SIZE=60 VALUE=\"%s\">",
htmlspecialchars($reply_subj));
} else if ($forward_subj) {
- $forward_subj = str_replace("\"", "'", $forward_subj);
$forward_subj = trim($forward_subj);
- if ((substr(strtolower($forward_subj), 0, 4) != "fwd:") &&
- (substr(strtolower($forward_subj), 0, 5) != "[fwd:") &&
- (substr(strtolower($forward_subj), 0, 6) != "[ fwd:"))
+ if ((substr(strtolower($forward_subj), 0, 4) != 'fwd:') &&
+ (substr(strtolower($forward_subj), 0, 5) != '[fwd:') &&
+ (substr(strtolower($forward_subj), 0, 6) != '[ fwd:'))
$forward_subj = "[Fwd: $forward_subj]";
printf(" <INPUT TYPE=text NAME=subject SIZE=60 VALUE=\"%s\">",
htmlspecialchars($forward_subj));
echo " value=\"" . _("Add") ."\">\n";
echo " </td>\n";
echo " </tr>\n";
- if (count($attachments) > 0) {
+ if (count($attachments))
+ {
echo "<tr><td bgcolor=\"$color[0]\" align=right>\n";
echo " ";
echo "</td><td align=left bgcolor=\"$color[0]\">";
- while (list($localname, $remotename) = each($attachments)) {
- echo "<input type=\"checkbox\" name=\"delete[]\" value=\"$localname\">\n";
- echo "$remotename <input type=\"hidden\" name=\"attachments[$localname]\" value=\"$remotename\"><br>\n";
+ foreach ($attachments as $key => $info) {
+ echo "<input type=\"checkbox\" name=\"delete[]\" value=\"$key\">\n";
+ echo $info['remotefilename'] . "<br>\n";
}
echo "<input type=\"submit\" name=\"do_delete\" value=\""._("Delete selected attachments")."\">\n";
function showComposeButtonRow() {
global $use_javascript_addr_book;
+
echo " <TR><td>\n </td><td>\n";
if ($use_javascript_addr_book) {
echo " <SCRIPT LANGUAGE=JavaScript><!--\n document.write(\"";
echo " </TR>\n\n";
}
- function showSentForm () {
- echo "<BR><BR><BR><CENTER><B>Message Sent!</B><BR><BR>";
- echo "You will be automatically forwarded.<BR>If not, <A HREF=\"right_main.php\">click here</A>";
- echo "</CENTER>";
- }
-
function checkInput ($show) {
/** I implemented the $show variable because the error messages
were getting sent before the page header. So, I check once
is_logged_in();
$localfilename = GenerateRandomString(32, '', 7);
- while (isset($attachments[$localfilename]))
+ while (file_exists($attachment_dir . $localfilename))
$localfilename = GenerateRandomString(32, '', 7);
-
+
if (!@rename($HTTP_POST_FILES['attachfile']['tmp_name'], $attachment_dir.$localfilename)) {
if (!@copy($HTTP_POST_FILES['attachfile']['tmp_name'], $attachment_dir.$localfilename)) {
return true;
}
}
+
+ $newAttachment['localfilename'] = $localfilename;
+ $newAttachment['remotefilename'] = $HTTP_POST_FILES['attachfile']['name'];
+ $newAttachment['type'] =
+ strtolower($HTTP_POST_FILES['attachfile']['type']);
- if (!isset($failed) || !$failed) {
- // Write information about the file
- $fp = fopen ($attachment_dir.$localfilename.".info", "w");
- fputs ($fp, $HTTP_POST_FILES['attachfile']['type']."\n".$HTTP_POST_FILES['attachfile']['name']."\n");
- fclose ($fp);
-
- $attachments[$localfilename] = $HTTP_POST_FILES['attachfile']['name'];
- }
+ $attachments[] = $newAttachment;
}
function SqConvertRussianCharsets(){
if (!isset($mailbox) || $mailbox == "" || ($mailbox == "None"))
$mailbox = "INBOX";
- if(isset($send)) {
+ if (isset($send)) {
if (isset($HTTP_POST_FILES['attachfile']) &&
$HTTP_POST_FILES['attachfile']['tmp_name'] &&
$HTTP_POST_FILES['attachfile']['tmp_name'] != 'none')
is_logged_in();
displayPageHeader($color, $mailbox);
- while (list($lkey, $localname) = each($delete)) {
- unset ($attachments[$localname]);
- unlink ($attachment_dir.$localname);
- unlink ($attachment_dir.$localname.".info");
+ if (isset($delete) && is_array($delete))
+ {
+ foreach($delete as $index)
+ {
+ unlink ($attachment_dir.$attachments[$index]['localfilename']);
+ unset ($attachments[$index]);
+ }
}
showInputForm();
displayPageHeader($color, $mailbox);
$newmail = true;
+
+ ClearAttachments();
+
if (isset($forward_id) && $forward_id && isset($ent_num) && $ent_num)
getAttachments(0);
showInputForm();
sqimap_logout($imapConnection);
}
+
+
+
+
+ function ClearAttachments()
+ {
+ global $attachments, $attachment_dir;
+
+ foreach ($attachments as $info)
+ {
+ if (file_exists($attachment_dir . $info['localfilename']))
+ {
+ unlink($attachment_dir . $info['localfilename']);
+ }
+ }
+
+ $attachments = array();
+ }
+
?>