4f11ed9072d7f43691a5f7232e6204fa280d4137
5 ** Functions for the IMAP connection
9 /** Read from the connection until we get either an OK or BAD message. **/
10 function imapReadData($connection) {
11 $read = fgets($connection, 1024);
13 while ((substr($read, strpos($read, " ") +
1, 2) != "OK") && (substr($read, strpos($read, " ") +
1, 3) != "BAD")) {
14 $data[$counter] = $read;
15 $read = fgets($connection, 1024);
21 /** Parse the incoming mailbox name and return a string that is the FOLDER.MAILBOX **/
22 function findMailboxName($mailbox) {
23 // start at -2 so that we skip the initial quote at the end of the mailbox name
25 $char = substr($mailbox, $i, 1);
26 while ($char != "\"") {
29 $char = substr($mailbox, $i, 1);
35 // handles logging onto an imap server.
36 function loginToImapServer($username, $key, $imapServerAddress) {
37 $imapConnection = fsockopen($imapServerAddress, 143, &$errorNumber, &$errorString);
38 if (!$imapConnection) {
39 echo "Error connecting to IMAP Server.<br>";
40 echo "$errorNumber : $errorString<br>";
43 $serverInfo = fgets($imapConnection, 256);
46 fputs($imapConnection, "1 login $username $key\n");
47 $read = fgets($imapConnection, 1024);
49 if (strpos($read, "NO")) {
50 error_username_password_incorrect();
54 return $imapConnection;
57 /** must be sent in the form: user.<USER>.<FOLDER> **/
58 function createFolder($imapConnection, $folder) {
59 fputs($imapConnection, "1 create \"$folder\"\n");
62 /** must be sent in the form: user.<USER>.<FOLDER> **/
63 function removeFolder($imapConnection, $folder) {
64 fputs($imapConnection, "1 delete \"$folder\"\n");
67 /** Sends back two arrays, boxesFormatted and boxesUnformatted **/
68 function getFolderList($imapConnection, &$boxesFormatted, &$boxesUnformatted) {
69 fputs($imapConnection, "1 list \"\" *\n");
70 $str = imapReadData($imapConnection);
72 for ($i = 0;$i < count($str); $i++
) {
73 $mailbox = chop($str[$i]);
74 $mailbox = findMailboxName($mailbox);
75 $periodCount = countCharInString($mailbox, ".");
77 // indent the correct number of spaces.
78 for ($j = 0;$j < $periodCount;$j++
)
79 $boxesFormatted[$i] = "$boxesFormatted[$i] ";
81 $boxesFormatted[$i] = $boxesFormatted[$i] . readShortMailboxName($mailbox, ".");
82 $boxesUnformatted[$i] = $mailbox;
86 function deleteMessages($imapConnection, $a, $b, $numMessages, $trash_folder, $move_to_trash, $auto_expunge, $mailbox) {
87 /** check if they would like to move it to the trash folder or not */
88 if ($move_to_trash == true) {
89 $success = copyMessages($imapConnection, $a, $b, $trash_folder);
91 setMessageFlag($imapConnection, $a, $b, "Deleted");
93 setMessageFlag($imapConnection, $a, $b, "Deleted");
96 function stripComments($line) {
97 if (strpos($line, ";")) {
98 $line = substr($line, 0, strpos($line, ";"));
101 if (strpos($line, "(") && strpos($line, ")")) {
102 $full_line = $full_line . substr($line, 0, strpos($line, "("));
103 $full_line = $full_line . substr($line, strpos($line, ")")+
1, strlen($line) - strpos($line, ")"));