if ($handle_errors == true) {
if ($response == "NO") {
- echo "<B><FONT COLOR=FF0000>ERROR</FONT><FONT COLOR=CC0000>: Could not complete request.</B> </FONT><BR><FONT COLOR=CC0000> <B>Reason given:</B> $message</FONT><BR><BR>";
+ echo "<BR><B><FONT FACE=\"Arial,Helvetica\" COLOR=FF0000>ERROR</FONT FACE=\"Arial,Helvetica\"><FONT FACE=\"Arial,Helvetica\" COLOR=CC0000>: Could not complete request.</B> </FONT FACE=\"Arial,Helvetica\"><BR><FONT FACE=\"Arial,Helvetica\" COLOR=CC0000> <B>Reason given:</B> $message</FONT FACE=\"Arial,Helvetica\"><BR><BR>";
exit;
} else if ($response == "BAD") {
- echo "<B><FONT COLOR=FF0000>ERROR</FONT><FONT COLOR=CC0000>: Bad or malformed request.</B></FONT><BR><FONT COLOR=CC0000> <B>Server responded:</B> $message</FONT><BR><BR>";
+ echo "<BR><B><FONT FACE=\"Arial,Helvetica\" COLOR=FF0000>ERROR</FONT FACE=\"Arial,Helvetica\"><FONT FACE=\"Arial,Helvetica\" COLOR=CC0000>: Bad or malformed request.</B></FONT FACE=\"Arial,Helvetica\"><BR><FONT FACE=\"Arial,Helvetica\" COLOR=CC0000> <B>Server responded:</B> $message</FONT FACE=\"Arial,Helvetica\"><BR><BR>";
exit;
}
}
fputs($imapConnection, ". list \"\" \"\"\n");
$read = fgets($imapConnection, 1024);
- $pos = strrpos($read, "\"");
- $read = substr($read, 0, $pos);
-
- $pos = strrpos($read, "\"");
- $read = substr($read, 0, $pos);
+ if (strrpos($read, "\"") == strlen($read)) {
+ $pos = strrpos($read, "\"");
+ $read = substr($read, 0, $pos);
+ $pos = strrpos($read, "\"");
+ $read = substr($read, 0, $pos);
+ } else {
+ $pos = strrpos($read, " ");
+ $read = substr($read, 0, $pos);
+ }
+
$pos = strrpos($read, "\"");
$read = substr($read, 0, $pos);
$serverInfo = fgets($imapConnection, 256);
// login
- fputs($imapConnection, "a001 LOGIN $username $key\n");
+ fputs($imapConnection, "a001 LOGIN \"$username\" \"$key\"\n");
$read = fgets($imapConnection, 1024);
if ($debug_login == true) {
echo "SERVER SAYS: $read<BR>";
}
+ /** If the login attempt was UNsuccessful, lets see why **/
if (substr($read, 0, 7) != "a001 OK") {
if (!$hide) {
if (substr($read, 0, 8) == "a001 BAD") {
exit;
}
else if (substr($read, 0, 7) == "a001 NO") {
- echo "<BR>";
- echo "<TABLE COLS=1 WIDTH=70% NOBORDER BGCOLOR=\"$color[4]\" ALIGN=CENTER>";
+ echo "<HTML><BODY BGCOLOR=FFFFFF><BR>";
+ echo "<TABLE COLS=1 WIDTH=70% NOBORDER BGCOLOR=FFFFFF ALIGN=CENTER>";
echo " <TR>";
- echo " <TD BGCOLOR=\"$color[0]\">";
- echo " <FONT FACE=\"Arial,Helvetica\" COLOR=\"$color[2]\"><B><CENTER>ERROR</CENTER></B></FONT>";
+ echo " <TD BGCOLOR=\"DCDCDC\">";
+ echo " <FONT FACE=\"Arial,Helvetica\" COLOR=CC0000><B><CENTER>ERROR</CENTER></B></FONT>";
echo " </TD></TR><TR><TD>";
echo " <CENTER><FONT FACE=\"Arial,Helvetica\"><BR>Unknown user or password incorrect.<BR><A HREF=\"login.php\" TARGET=_top>Click here to try again</A>.</FONT></CENTER>";
echo " </TD></TR>";
$data = imapReadData($imapConnection, "1", false, $response, $message);
if ($response == "NO") {
- echo "<B><FONT COLOR=FF0000>ERROR</FONT><FONT COLOR=CC0000>: Could not complete request.</B> </FONT><BR><FONT COLOR=CC0000> <B>Reason given:</B> $message</FONT><BR><BR>";
- echo "Possible solutions:<BR><LI>You may need to specify that the folder is a subfolder of INBOX</LI>";
+ echo "<BR><B><FONT FACE=\"Arial,Helvetica\" COLOR=FF0000>ERROR</FONT FACE=\"Arial,Helvetica\"><FONT FACE=\"Arial,Helvetica\" COLOR=CC0000>: Could not complete request.</B> </FONT FACE=\"Arial,Helvetica\"><BR><FONT FACE=\"Arial,Helvetica\" COLOR=CC0000> <B>Reason given:</B> $message</FONT FACE=\"Arial,Helvetica\"><BR><BR>";
+ echo "<FONT FACE=\"Arial,Helvetica\">Possible solutions:<BR><LI>You may need to specify that the folder is a subfolder of INBOX</LI>";
+ echo "<LI>Try renaming the folder to something different.</LI>";
exit;
} else if ($response == "BAD") {
- echo "<B><FONT COLOR=FF0000>ERROR</FONT><FONT COLOR=CC0000>: Bad or malformed request.</B></FONT><BR><FONT COLOR=CC0000> <B>Server responded:</B> $message</FONT><BR><BR>";
+ echo "<B><FONT FACE=\"Arial,Helvetica\" COLOR=FF0000>ERROR</FONT FACE=\"Arial,Helvetica\"><FONT FACE=\"Arial,Helvetica\" COLOR=CC0000>: Bad or malformed request.</B></FONT FACE=\"Arial,Helvetica\"><BR><FONT FACE=\"Arial,Helvetica\" COLOR=CC0000> <B>Server responded:</B> $message</FONT FACE=\"Arial,Helvetica\"><BR><BR>";
exit;
}
+ fputs($imapConnection, "1 SUBSCRIBE \"$folder\"\n");
+ $data = imapReadData($imapConnection, "1", true, $response, $message);
}
function removeFolder($imapConnection, $folder) {
}
/** Sends back two arrays, boxesFormatted and boxesUnformatted **/
- function getFolderList($imapConnection, &$boxesFormatted, &$boxesUnformatted, &$boxesRaw) {
- fputs($imapConnection, "1 list \"\" *\n");
+ function getFolderList($imapConnection, &$boxes) {
+ require ("../config/config.php");
+ if (!function_exists("ary_sort"))
+ include("../functions/array.php");
+
+ /** First we get the inbox **/
+ fputs($imapConnection, "1 LIST \"\" INBOX\n");
$str = imapReadData($imapConnection, "1", true, $response, $message);
+ $dm = findMailboxDelimeter($imapConnection);
+ $g = 0;
+ for ($i = 0;$i < count($str); $i++) {
+ $mailbox = chop($str[$i]);
+ if (substr(findMailboxName($mailbox), 0, 1) != ".") {
+ $boxes[$g]["RAW"] = $mailbox;
+
+ $mailbox = findMailboxName($mailbox);
+ $periodCount = countCharInString($mailbox, $dm);
+
+ // indent the correct number of spaces.
+ for ($j = 0;$j < $periodCount;$j++)
+ $boxes[$g]["FORMATTED"] = $boxes[$g]["FORMATTED"] . " ";
+
+ $boxes[$g]["FORMATTED"] = $boxes[$g]["FORMATTED"] . readShortMailboxName($mailbox, $dm);
+ $boxes[$g]["UNFORMATTED"] = $mailbox;
+ $boxes[$g]["ID"] = $g;
+ $g++;
+ }
+ }
+ /** Next, we get all subscribed folders **/
+ fputs($imapConnection, "1 LSUB \"\" *\n");
+ $str = imapReadData($imapConnection, "1", true, $response, $message);
$dm = findMailboxDelimeter($imapConnection);
for ($i = 0;$i < count($str); $i++) {
$mailbox = chop($str[$i]);
- $boxesRaw[$i] = $mailbox;
+ if (substr(findMailboxName($mailbox), 0, 1) != ".") {
+ $boxes[$g]["RAW"] = $mailbox;
- $mailbox = findMailboxName($mailbox);
- $periodCount = countCharInString($mailbox, $dm);
+ $mailbox = findMailboxName($mailbox);
+ $periodCount = countCharInString($mailbox, $dm);
- // indent the correct number of spaces.
- for ($j = 0;$j < $periodCount;$j++)
- $boxesFormatted[$i] = "$boxesFormatted[$i] ";
+ // indent the correct number of spaces.
+ for ($j = 0;$j < $periodCount;$j++)
+ $boxes[$g]["FORMATTED"] = $boxes[$g]["FORMATTED"] . " ";
- $boxesFormatted[$i] = $boxesFormatted[$i] . readShortMailboxName($mailbox, $dm);
- $boxesUnformatted[$i] = $mailbox;
+ $boxes[$g]["FORMATTED"] = $boxes[$g]["FORMATTED"] . readShortMailboxName($mailbox, $dm);
+ $boxes[$g]["UNFORMATTED"] = $mailbox;
+ $boxes[$g]["ID"] = $g;
+ $g++;
+ }
}
+
+ $original = $boxes;
+
+ for ($i = 0; $i < count($original); $i++) {
+ $boxes[$i]["UNFORMATTED"] = strtolower($boxes[$i]["UNFORMATTED"]);
+ }
+
+ $boxes = ary_sort($boxes, "UNFORMATTED", 1);
+
+ for ($i = 0; $i < count($original); $i++) {
+ for ($j = 0; $j < count($original); $j++) {
+ if ($boxes[$i]["ID"] == $original[$j]["ID"]) {
+ $boxes[$i]["UNFORMATTED"] = $original[$j]["UNFORMATTED"];
+ $boxes[$i]["FORMATTED"] = $original[$j]["FORMATTED"];
+ $boxes[$i]["RAW"] = $original[$j]["RAW"];
+ }
+ }
+ }
+
+ for ($i = 0; $i < count($boxes); $i++) {
+ if ($boxes[$i]["UNFORMATTED"] == $special_folders[0]) {
+ $boxesnew[0]["FORMATTED"] = $boxes[$i]["FORMATTED"];
+ $boxesnew[0]["UNFORMATTED"] = trim($boxes[$i]["UNFORMATTED"]);
+ $boxesnew[0]["RAW"] = trim($boxes[$i]["RAW"]);
+ $boxes[$i]["USED"] = true;
+ }
+ }
+ if ($list_special_folders_first == true) {
+ for ($i = 0; $i < count($boxes); $i++) {
+ for ($j = 1; $j < count($special_folders); $j++) {
+ if (substr($boxes[$i]["UNFORMATTED"], 0, strlen($special_folders[$j])) == $special_folders[$j]) {
+ $pos = count($boxesnew);
+ $boxesnew[$pos]["FORMATTED"] = $boxes[$i]["FORMATTED"];
+ $boxesnew[$pos]["RAW"] = trim($boxes[$i]["RAW"]);
+ $boxesnew[$pos]["UNFORMATTED"] = trim($boxes[$i]["UNFORMATTED"]);
+ $boxes[$i]["USED"] = true;
+ }
+ }
+ }
+ }
+ for ($i = 0; $i < count($boxes); $i++) {
+ if (($boxes[$i]["UNFORMATTED"] != $special_folders[0]) &&
+ ($boxes[$i]["UNFORMATTED"] != ".mailboxlist") &&
+ ($boxes[$i]["USED"] == false)) {
+ $pos = count($boxesnew);
+ $boxesnew[$pos]["FORMATTED"] = $boxes[$i]["FORMATTED"];
+ $boxesnew[$pos]["RAW"] = trim($boxes[$i]["RAW"]);
+ $boxesnew[$pos]["UNFORMATTED"] = trim($boxes[$i]["UNFORMATTED"]);
+ $boxes[$i]["USED"] = true;
+ }
+ }
+
+ $boxes = $boxesnew;
}
function deleteMessages($imapConnection, $a, $b, $numMessages, $trash_folder, $move_to_trash, $auto_expunge, $mailbox) {
/** check if they would like to move it to the trash folder or not */
- if ($move_to_trash == true) {
+ if (($move_to_trash == true) && (folderExists($imapConnection, $trash_folder))) {
$success = copyMessages($imapConnection, $a, $b, $trash_folder);
if ($success == true)
setMessageFlag($imapConnection, $a, $b, "Deleted");
} else {
setMessageFlag($imapConnection, $a, $b, "Deleted");
}
+ if ($auto_expunge == true)
+ expungeBox($imapConnection, $mailbox);
}
+
function stripComments($line) {
if (strpos($line, ";")) {
$line = substr($line, 0, strpos($line, ";"));
}
return $full_line;
}
+
+ function folderExists($imapConnection, $folderName) {
+ getFolderList($imapConnection, $folders);
+ $found = false;
+ for ($i = 0; ($i < count($folders)) && (!$found); $i++) {
+ if ($folders[$i]["UNFORMATTED"] == $folderName)
+ $found = true;
+ }
+ return $found;
+ }
?>