| | |
| | | - fixed iil_MultLine(): use iil_ReadBytes() instead of iil_ReadLine() |
| | | - fixed iil_C_FetchStructureString() to handle many literal strings in response |
| | | - removed hardcoded data size in iil_ReadLine() |
| | | - added iil_PutLine() wrapper for fputs() |
| | | - code cleanup and identation fixes |
| | | |
| | | ********************************************************/ |
| | | |
| | |
| | | var $mid; |
| | | } |
| | | |
| | | |
| | | function iil_xor($string, $string2) { |
| | | $result = ''; |
| | | $size = strlen($string); |
| | |
| | | return $result; |
| | | } |
| | | |
| | | function iil_PutLine($fp, $string, $endln=true) { |
| | | // console('C: '. $string); |
| | | return fputs($fp, $string . ($endln ? "\r\n" : '')); |
| | | } |
| | | |
| | | function iil_ReadLine($fp, $size) { |
| | | $line = ''; |
| | | |
| | | if (!$fp) { |
| | | return $line; |
| | | } |
| | |
| | | if ($buffer === false) { |
| | | break; |
| | | } |
| | | // console('S: '. chop($buffer)); |
| | | $line .= $buffer; |
| | | } while ($buffer[strlen($buffer)-1] != "\n"); |
| | | |
| | | return $line; |
| | | } |
| | | |
| | |
| | | $out .= $line; |
| | | } |
| | | $line = $a[1][0] . "\"$out\""; |
| | | // console('[...] '. $out); |
| | | } |
| | | return $line; |
| | | } |
| | |
| | | } |
| | | $len = strlen($data); |
| | | } while ($len < $bytes); |
| | | |
| | | return $data; |
| | | } |
| | | |
| | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | function iil_Escape($string) |
| | | { |
| | | return strtr($string, array('"'=>'\\"', '\\' => '\\\\')); |
| | |
| | | $ipad .= chr(0x36); |
| | | $opad .= chr(0x5C); |
| | | } |
| | | |
| | | // pad $pass so it's 64 bytes |
| | | $padLen = 64 - strlen($pass); |
| | | for ($i=0;$i<$padLen;$i++) { |
| | |
| | | $reply = base64_encode('"' . $user . '" "' . $hash . '"'); |
| | | |
| | | // send result, get reply |
| | | fputs($conn->fp, $reply . "\r\n"); |
| | | iil_PutLine($conn->fp, $reply); |
| | | $line = iil_ReadLine($conn->fp, 1024); |
| | | |
| | | // process result |
| | |
| | | |
| | | function iil_C_Login(&$conn, $user, $password) { |
| | | |
| | | fputs($conn->fp, 'a001 LOGIN "'.iil_Escape($user).'" "'.iil_Escape($password)."\"\r\n"); |
| | | iil_PutLine($conn->fp, 'a001 LOGIN "'.iil_Escape($user).'" "'.iil_Escape($password).'"'); |
| | | |
| | | do { |
| | | $line = iil_ReadReply($conn->fp); |
| | |
| | | return true; |
| | | } |
| | | |
| | | fputs($conn->fp, "ns1 NAMESPACE\r\n"); |
| | | iil_PutLine($conn->fp, "ns1 NAMESPACE"); |
| | | do { |
| | | $line = iil_ReadLine($conn->fp, 1024); |
| | | if (iil_StartsWith($line, '* NAMESPACE')) { |
| | |
| | | $my_prefs["rootdir"] = substr($conn->rootdir, 0, -1); |
| | | |
| | | return true; |
| | | |
| | | } |
| | | |
| | | function iil_Connect($host, $user, $password) { |
| | |
| | | // if (preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) { |
| | | // $conn->capability = explode(' ', $matches[1]); |
| | | // } else { |
| | | fputs($conn->fp, "cp01 CAPABILITY\r\n"); |
| | | iil_PutLine($conn->fp, "cp01 CAPABILITY"); |
| | | do { |
| | | $line = trim(iil_ReadLine($conn->fp, 100)); |
| | | $line = trim(iil_ReadLine($conn->fp, 1024)); |
| | | |
| | | $conn->message .= "$line\n"; |
| | | |
| | |
| | | $conn->message .= "Trying CRAM-MD5\n"; |
| | | |
| | | //do CRAM-MD5 authentication |
| | | fputs($conn->fp, "a000 AUTHENTICATE CRAM-MD5\r\n"); |
| | | iil_PutLine($conn->fp, "a000 AUTHENTICATE CRAM-MD5"); |
| | | $line = trim(iil_ReadLine($conn->fp, 1024)); |
| | | |
| | | $conn->message .= "$line\n"; |
| | |
| | | $conn->message .= "Tried CRAM-MD5: $result \n"; |
| | | } else { |
| | | $conn->message .='No challenge ('.htmlspecialchars($line)."), try plain\n"; |
| | | |
| | | $auth = 'plain'; |
| | | } |
| | | } |
| | |
| | | |
| | | function iil_Close(&$conn) { |
| | | iil_C_WriteCache($conn); |
| | | if (fputs($conn->fp, "I LOGOUT\r\n")) { |
| | | if (iil_PutLine($conn->fp, "I LOGOUT")) { |
| | | fgets($conn->fp, 1024); |
| | | fclose($conn->fp); |
| | | $conn->fp = false; |
| | |
| | | |
| | | function iil_ClearCache($user, $host) { |
| | | } |
| | | |
| | | |
| | | function iil_C_WriteCache(&$conn) { |
| | | //echo "<!-- doing iil_C_WriteCache //-->\n"; |
| | |
| | | $conn = iil_Connect($host, $user, $password, 'plain'); |
| | | $fp = $conn->fp; |
| | | if ($fp) { |
| | | fputs($fp, "a002 EXAMINE \"".iil_Escape($mailbox)."\"\r\n"); |
| | | iil_PutLine($fp, "a002 EXAMINE \"".iil_Escape($mailbox)."\""); |
| | | do { |
| | | $line=chop(iil_ReadLine($fp, 300)); |
| | | $a=explode(' ', $line); |
| | |
| | | } |
| | | } while (!iil_StartsWith($a[0], 'a002')); |
| | | |
| | | fputs($fp, "a003 LOGOUT\r\n"); |
| | | iil_PutLine($fp, "a003 LOGOUT"); |
| | | fclose($fp); |
| | | } else { |
| | | $result = -2; |
| | |
| | | } |
| | | |
| | | function iil_C_Select(&$conn, $mailbox) { |
| | | $fp = $conn->fp; |
| | | |
| | | if (empty($mailbox)) { |
| | | return false; |
| | |
| | | |
| | | iil_C_LoadCache($conn, $mailbox); |
| | | |
| | | if (fputs($fp, "sel1 SELECT \"".iil_Escape($mailbox)."\"\r\n")) { |
| | | if (iil_PutLine($conn->fp, "sel1 SELECT \"".iil_Escape($mailbox).'"')) { |
| | | do { |
| | | $line=chop(iil_ReadLine($fp, 300)); |
| | | $line = chop(iil_ReadLine($conn->fp, 300)); |
| | | $a=explode(' ', $line); |
| | | if (count($a) == 3) { |
| | | if (strcasecmp($a[2], 'EXISTS') == 0) { |
| | |
| | | if ($refresh) { |
| | | $conn->selected= ''; |
| | | } |
| | | |
| | | iil_C_Select($conn, $mailbox); |
| | | if ($conn->selected == $mailbox) { |
| | | return $conn->exists; |
| | |
| | | if ($field == 'INTERNALDATE') { |
| | | $field = 'ARRIVAL'; |
| | | } |
| | | |
| | | $fields = array('ARRIVAL' => 1,'CC' => 1,'DATE' => 1, |
| | | 'FROM' => 1, 'SIZE' => 1, 'SUBJECT' => 1, 'TO' => 1); |
| | | |
| | |
| | | |
| | | $fp = $conn->fp; |
| | | $command = 's ' . $is_uid . 'SORT (' . $field . ') '; |
| | | $command .= $encoding . ' ALL' . "$add\r\n"; |
| | | $command .= $encoding . ' ALL' . $add; |
| | | $line = $data = ''; |
| | | |
| | | if (!fputs($fp, $command)) { |
| | | if (!iil_PutLine($fp, $command)) { |
| | | return false; |
| | | } |
| | | do { |
| | |
| | | /* FETCH date,from,subject headers */ |
| | | if ($mode == 1) { |
| | | $key = 'fhi' . ($c++); |
| | | $request = $key . " FETCH $message_set (BODY.PEEK[HEADER.FIELDS ($index_field)])\r\n"; |
| | | if (!fputs($fp, $request)) { |
| | | $request = $key . " FETCH $message_set (BODY.PEEK[HEADER.FIELDS ($index_field)])"; |
| | | if (!iil_PutLine($fp, $request)) { |
| | | return false; |
| | | } |
| | | do { |
| | |
| | | }else if ($mode == 6) { |
| | | |
| | | $key = 'fhi' . ($c++); |
| | | $request = $key . " FETCH $message_set (INTERNALDATE)\r\n"; |
| | | if (!fputs($fp, $request)) { |
| | | $request = $key . " FETCH $message_set (INTERNALDATE)"; |
| | | if (!iil_PutLine($fp, $request)) { |
| | | return false; |
| | | } |
| | | do { |
| | |
| | | |
| | | /* FETCH uid, size, flags */ |
| | | $key = 'fhi' .($c++); |
| | | $request = $key . " FETCH $message_set ($field_name)\r\n"; |
| | | $request = $key . " FETCH $message_set ($field_name)"; |
| | | |
| | | if (!fputs($fp, $request)) { |
| | | if (!iil_PutLine($fp, $request)) { |
| | | return false; |
| | | } |
| | | do { |
| | |
| | | } |
| | | $prev = $id; |
| | | } |
| | | |
| | | //handle the last sequence/id |
| | | if ($start==$prev) { |
| | | $result[] = $prev; |
| | |
| | | $key = 'fh'; |
| | | $fp = $conn->fp; |
| | | $request = $key . " FETCH $message_set "; |
| | | $request .= "(BODY.PEEK[HEADER.FIELDS (SUBJECT MESSAGE-ID IN-REPLY-TO)])\r\n"; |
| | | $request .= "(BODY.PEEK[HEADER.FIELDS (SUBJECT MESSAGE-ID IN-REPLY-TO)])"; |
| | | $mid_to_id = array(); |
| | | if (!fputs($fp, $request)) { |
| | | if (!iil_PutLine($fp, $request)) { |
| | | return false; |
| | | } |
| | | do { |
| | |
| | | echo $new['MESSAGE-ID'] . "\t" . $sbj . "\n"; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | //now that we've gone through all the messages, |
| | |
| | | if ($debug) { |
| | | print_r($roots); |
| | | } |
| | | //print_r($result); |
| | | |
| | | return $result; |
| | | } |
| | | |
| | | |
| | | function iil_SortThreads(&$tree, $index, $sort_order = 'ASC') { |
| | | if (!is_array($tree) || !is_array($index)) { |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | //sort by key, this basically sorts all threads |
| | | ksort($itree); |
| | | $i = 0; |
| | |
| | | $i++; |
| | | } |
| | | |
| | | //return |
| | | return $out; |
| | | } |
| | | |
| | |
| | | $request .= " FETCH $message_set (BODY.PEEK[HEADER.FIELDS "; |
| | | $request .= "(DATE FROM TO SUBJECT REPLY-TO IN-REPLY-TO CC BCC "; |
| | | $request .= "CONTENT-TRANSFER-ENCODING CONTENT-TYPE MESSAGE-ID "; |
| | | $request .= "REFERENCES DISPOSITION-NOTIFICATION-TO X-PRIORITY)])\r\n"; |
| | | $request .= "REFERENCES DISPOSITION-NOTIFICATION-TO X-PRIORITY)])"; |
| | | |
| | | if (!fputs($fp, $request)) { |
| | | if (!iil_PutLine($fp, $request)) { |
| | | return false; |
| | | } |
| | | do { |
| | |
| | | */ |
| | | $command_key = 'fh' . ($c++); |
| | | $request = $command_key . $prefix; |
| | | $request .= " FETCH $message_set (UID RFC822.SIZE FLAGS INTERNALDATE)\r\n"; |
| | | $request .= " FETCH $message_set (UID RFC822.SIZE FLAGS INTERNALDATE)"; |
| | | |
| | | if (!fputs($fp, $request)) { |
| | | if (!iil_PutLine($fp, $request)) { |
| | | return false; |
| | | } |
| | | do { |
| | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | function iil_SortHeaders($a, $field, $flag) { |
| | | if (empty($field)) { |
| | | $field = 'uid'; |
| | |
| | | } |
| | | |
| | | function iil_C_Expunge(&$conn, $mailbox) { |
| | | $fp = $conn->fp; |
| | | |
| | | if (iil_C_Select($conn, $mailbox)) { |
| | | $c = 0; |
| | | fputs($fp, "exp1 EXPUNGE\r\n"); |
| | | iil_PutLine($conn->fp, "exp1 EXPUNGE"); |
| | | do { |
| | | $line=chop(iil_ReadLine($fp, 100)); |
| | | $line=chop(iil_ReadLine($conn->fp, 100)); |
| | | if ($line[0] == '*') { |
| | | $c++; |
| | | } |
| | |
| | | |
| | | if (iil_C_Select($conn, $mailbox)) { |
| | | $c = 0; |
| | | fputs($fp, "flg STORE $messages " . $mod . "FLAGS (" . $flag . ")\r\n"); |
| | | iil_PutLine($fp, "flg STORE $messages " . $mod . "FLAGS (" . $flag . ")"); |
| | | do { |
| | | $line=chop(iil_ReadLine($fp, 100)); |
| | | if ($line[0] == '*') { |
| | |
| | | return iil_C_ModFlag($conn, $mailbox, $messages, 'SEEN', '-'); |
| | | } |
| | | |
| | | |
| | | function iil_C_Copy(&$conn, $messages, $from, $to) { |
| | | $fp = $conn->fp; |
| | | |
| | |
| | | if (iil_C_Select($conn, $from)) { |
| | | $c=0; |
| | | |
| | | fputs($fp, "cpy1 COPY $messages \"".iil_Escape($to)."\"\r\n"); |
| | | iil_PutLine($fp, "cpy1 COPY $messages \"".iil_Escape($to)."\""); |
| | | $line=iil_ReadReply($fp); |
| | | return iil_ParseResult($line); |
| | | } else { |
| | |
| | | $result = -1; |
| | | if (iil_C_Select($conn, $folder)) { |
| | | $key = 'FUID'; |
| | | if (fputs($fp, "$key FETCH $id (UID)\r\n")) { |
| | | if (iil_PutLine($fp, "$key FETCH $id (UID)")) { |
| | | do { |
| | | $line=chop(iil_ReadLine($fp, 1024)); |
| | | if (eregi("^\* $id FETCH \(UID (.*)\)", $line, $r)) { |
| | |
| | | if (iil_C_Select($conn, $folder)) { |
| | | $c = 0; |
| | | |
| | | $query = 'srch1 SEARCH ' . chop($criteria) . "\r\n"; |
| | | fputs($fp, $query); |
| | | $query = 'srch1 SEARCH ' . chop($criteria); |
| | | iil_PutLine($fp, $query); |
| | | do { |
| | | $line=trim(iil_ReadLine($fp, 10000)); |
| | | if (eregi("^\* SEARCH", $line)) { |
| | |
| | | } |
| | | $conn->error = 'iil_C_Search: ' . $line . "\n"; |
| | | return false; |
| | | |
| | | } |
| | | $conn->error = "iil_C_Search: Couldn't select \"$folder\"\n"; |
| | | return false; |
| | |
| | | $delimiter = false; |
| | | |
| | | //try (LIST "" ""), should return delimiter (RFC2060 Sec 6.3.8) |
| | | if (!fputs($fp, 'ghd LIST "" ""' . "\r\n")) { |
| | | if (!iil_PutLine($fp, 'ghd LIST "" ""')) { |
| | | return false; |
| | | } |
| | | |
| | |
| | | |
| | | //if that fails, try namespace extension |
| | | //try to fetch namespace data |
| | | fputs($conn->fp, "ns1 NAMESPACE\r\n"); |
| | | iil_PutLine($conn->fp, "ns1 NAMESPACE"); |
| | | do { |
| | | $line = iil_ReadLine($conn->fp, 1024); |
| | | if (iil_StartsWith($line, '* NAMESPACE')) { |
| | |
| | | } |
| | | |
| | | // send command |
| | | if (!fputs($fp, "lmb LIST \"".$ref."\" \"".iil_Escape($mailbox)."\"\r\n")) { |
| | | if (!iil_PutLine($fp, "lmb LIST \"".$ref."\" \"".iil_Escape($mailbox)."\"")) { |
| | | return false; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | function iil_C_ListSubscribed(&$conn, $ref, $mailbox) { |
| | | global $IGNORE_FOLDERS; |
| | | |
| | |
| | | $folders = array(); |
| | | |
| | | // send command |
| | | if (!fputs($fp, 'lsb LSUB "' . $ref . '" "' . iil_Escape($mailbox).'"' . "\r\n")) { |
| | | if (!iil_PutLine($fp, 'lsb LSUB "' . $ref . '" "' . iil_Escape($mailbox).'"')) { |
| | | $conn->error = "Couldn't send LSUB command\n"; |
| | | return false; |
| | | } |
| | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | function iil_C_Subscribe(&$conn, $folder) { |
| | | $fp = $conn->fp; |
| | | |
| | | $query = 'sub1 SUBSCRIBE "' . iil_Escape($folder). '"' . "\r\n"; |
| | | fputs($fp, $query); |
| | | $query = 'sub1 SUBSCRIBE "' . iil_Escape($folder). '"'; |
| | | iil_PutLine($fp, $query); |
| | | |
| | | $line = trim(iil_ReadLine($fp, 10000)); |
| | | return iil_ParseResult($line); |
| | | } |
| | | |
| | | |
| | | function iil_C_UnSubscribe(&$conn, $folder) { |
| | | $fp = $conn->fp; |
| | | |
| | | $query = 'usub1 UNSUBSCRIBE "' . iil_Escape($folder) . '"' . "\r\n"; |
| | | fputs($fp, $query); |
| | | $query = 'usub1 UNSUBSCRIBE "' . iil_Escape($folder) . '"'; |
| | | iil_PutLine($fp, $query); |
| | | |
| | | $line = trim(iil_ReadLine($fp, 10000)); |
| | | return iil_ParseResult($line); |
| | | } |
| | | |
| | | |
| | | function iil_C_FetchPartHeader(&$conn, $mailbox, $id, $part) { |
| | | $fp = $conn->fp; |
| | |
| | | |
| | | if (iil_C_Select($conn, $mailbox)) { |
| | | $key = 'fh' . ($c++); |
| | | $request = $key . " FETCH $id (BODY.PEEK[$part])\r\n"; |
| | | if (!fputs($fp, $request)) return false; |
| | | $request = $key . " FETCH $id (BODY.PEEK[$part])"; |
| | | if (!iil_PutLine($fp, $request)) return false; |
| | | do { |
| | | $line = chop(iil_ReadLine($fp, 200)); |
| | | $a = explode(' ', $line); |
| | |
| | | return $result; |
| | | } |
| | | |
| | | |
| | | function iil_C_HandlePartBody(&$conn, $mailbox, $id, $part, $mode) { |
| | | /* modes: |
| | | 1: return string |
| | | 2: print |
| | | 3: base64 and print |
| | | */ |
| | | |
| | | $fp = $conn->fp; |
| | | $result = false; |
| | | if (($part == 0) || empty($part)) { |
| | |
| | | |
| | | // format request |
| | | $key = 'ftch' . ($c++) . ' '; |
| | | $request = $key . "FETCH $id (BODY.PEEK[$part])\r\n"; |
| | | $request = $key . "FETCH $id (BODY.PEEK[$part])"; |
| | | // send request |
| | | if (!fputs($fp, $request)) { |
| | | if (!iil_PutLine($fp, $request)) { |
| | | return false; |
| | | } |
| | | |
| | |
| | | $a = explode(' ', $line); |
| | | } while ($a[2] != 'FETCH'); |
| | | $len = strlen($line); |
| | | |
| | | if ($line[$len-1] == ')') { |
| | | //one line response, get everything between first and last quotes |
| | | if (substr($line, -4, 3) == 'NIL') { |
| | |
| | | $sizeStr = substr($line, $from, $len); |
| | | $bytes = (int)$sizeStr; |
| | | $received = 0; |
| | | |
| | | while ($received < $bytes) { |
| | | $remaining = $bytes - $received; |
| | | $line = iil_ReadLine($fp, 1024); |
| | |
| | | $result = rtrim($result, "\t\r\n\0\x0B"); |
| | | return $result; // substr($result, 0, strlen($result)-1); |
| | | } |
| | | |
| | | return false; |
| | | } else { |
| | | echo 'Select failed.'; |
| | |
| | | |
| | | function iil_C_CreateFolder(&$conn, $folder) { |
| | | $fp = $conn->fp; |
| | | if (fputs($fp, 'c CREATE "' . iil_Escape($folder) . '"' . "\r\n")) { |
| | | if (iil_PutLine($fp, 'c CREATE "' . iil_Escape($folder) . '"')) { |
| | | do { |
| | | $line=iil_ReadLine($fp, 300); |
| | | } while ($line[0] != 'c'); |
| | |
| | | |
| | | function iil_C_RenameFolder(&$conn, $from, $to) { |
| | | $fp = $conn->fp; |
| | | if (fputs($fp, 'r RENAME "' . iil_Escape($from) . '" "' . iil_Escape($to) . '"' . "\r\n")) { |
| | | if (iil_PutLine($fp, 'r RENAME "' . iil_Escape($from) . '" "' . iil_Escape($to) . '"')) { |
| | | do { |
| | | $line = iil_ReadLine($fp, 300); |
| | | } while ($line[0] != 'r'); |
| | |
| | | |
| | | function iil_C_DeleteFolder(&$conn, $folder) { |
| | | $fp = $conn->fp; |
| | | if (fputs($fp, 'd DELETE "' . iil_Escape($folder). '"' . "\r\n")) { |
| | | if (iil_PutLine($fp, 'd DELETE "' . iil_Escape($folder). '"')) { |
| | | do { |
| | | $line=iil_ReadLine($fp, 300); |
| | | } while ($line[0] != 'd'); |
| | |
| | | if (!$len) { |
| | | return false; |
| | | } |
| | | $request = 'A APPEND "' . iil_Escape($folder) .'" (\\Seen) {' . $len . "}\r\n"; |
| | | |
| | | if (fputs($fp, $request)) { |
| | | $request = 'A APPEND "' . iil_Escape($folder) .'" (\\Seen) {' . $len . '}'; |
| | | |
| | | if (iil_PutLine($fp, $request)) { |
| | | $line=iil_ReadLine($fp, 100); |
| | | $sent = fwrite($fp, $message."\r\n"); |
| | | do { |
| | |
| | | $conn->error .= $line . "\n"; |
| | | } |
| | | return $result; |
| | | |
| | | } |
| | | |
| | | $conn->error .= "Couldn't send command \"$request\"\n"; |
| | | return false; |
| | | } |
| | | |
| | | |
| | | function iil_C_AppendFromFile(&$conn, $folder, $path) { |
| | | if (!$folder) { |
| | |
| | | } |
| | | |
| | | //send APPEND command |
| | | $request = 'A APPEND "' . iil_Escape($folder) . '" (\\Seen) {' . $len . "}\r\n"; |
| | | $request = 'A APPEND "' . iil_Escape($folder) . '" (\\Seen) {' . $len . '}'; |
| | | $bytes_sent = 0; |
| | | if (fputs($fp, $request)) { |
| | | if (iil_PutLine($fp, $request)) { |
| | | $line = iil_ReadLine($fp, 100); |
| | | |
| | | //send file |
| | | while (!feof($in_fp)) { |
| | | $buffer = fgets($in_fp, 4096); |
| | | $bytes_sent += strlen($buffer); |
| | | fputs($fp, $buffer); |
| | | iil_PutLine($fp, $buffer, false); |
| | | } |
| | | fclose($in_fp); |
| | | |
| | | fputs($fp, "\r\n"); |
| | | iil_PutLine($fp, ''); |
| | | |
| | | //read response |
| | | do { |
| | |
| | | if (!$result) { |
| | | $conn->error .= $line . "\n"; |
| | | } |
| | | return $result; |
| | | |
| | | return $result; |
| | | } |
| | | |
| | | $conn->error .= "Couldn't send command \"$request\"\n"; |
| | | return false; |
| | | } |
| | | |
| | | |
| | | function iil_C_FetchStructureString(&$conn, $folder, $id) { |
| | | $fp = $conn->fp; |
| | |
| | | if (iil_C_Select($conn, $folder)) { |
| | | $key = 'F1247'; |
| | | |
| | | if (fputs($fp, "$key FETCH $id (BODYSTRUCTURE)\r\n")) { |
| | | if (iil_PutLine($fp, "$key FETCH $id (BODYSTRUCTURE)")) { |
| | | do { |
| | | $line = iil_ReadLine($fp, 5000); |
| | | $line = iil_MultLine($fp, $line); |
| | | $result .= $line; |
| | | } while (!preg_match("/^$key/", $line)); |
| | | |
| | | $result = trim(substr($result, strpos($result, 'BODYSTRUCTURE')+13, -(strlen($result)-strrpos($result, $key)-2))); |
| | | $result = trim(substr($result, strpos($result, 'BODYSTRUCTURE')+13, |
| | | -(strlen($result)-strrpos($result, $key)-2))); |
| | | } |
| | | } |
| | | return $result; |
| | |
| | | $quota_line = ''; |
| | | |
| | | //get line containing quota info |
| | | if (fputs($fp, 'QUOT1 GETQUOTAROOT "INBOX"' . "\r\n")) { |
| | | if (iil_PutLine($fp, 'QUOT1 GETQUOTAROOT "INBOX"')) { |
| | | do { |
| | | $line=chop(iil_ReadLine($fp, 5000)); |
| | | if (iil_StartsWith($line, '* QUOTA ')) { |
| | |
| | | } |
| | | return $result; |
| | | } |
| | | |
| | | |
| | | function iil_C_ClearFolder(&$conn, $folder) { |
| | | $num_in_trash = iil_C_CountMessages($conn, $folder); |