X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fimap_messages.php;h=f0d5366504b6518055feb00aa5c80d5634e21d04;hp=f2e38335161f49379d9dfecb357063af4839c31c;hb=767ace1fe6e1680d938c0a47c6f0e27512df84f8;hpb=b854f93ad744a87ab3a06aaa1dbe55a9a986a2c3 diff --git a/functions/imap_messages.php b/functions/imap_messages.php index f2e38335..f0d53665 100755 --- a/functions/imap_messages.php +++ b/functions/imap_messages.php @@ -621,6 +621,60 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list) { return $result; } +function sqimap_get_headerfield($imap_stream, $field) { + $sid = sqimap_session_id(false); + + $results = array(); + $read_list = array(); + + $query = "$sid FETCH 1:* (UID BODY.PEEK[HEADER.FIELDS ($field)])\r\n"; + fputs ($imap_stream, $query); + $readin_list = sqimap_read_data_list($imap_stream, $sid, false, $response, $message); + $i = 0; + + foreach ($readin_list as $r) { + $r = implode('',$r); + /* first we unfold the header */ + $r = str_replace(array("\r\n\t","\r\n\s"),array('',''),$r); + /* + * now we can make a new header array with each element representing + * a headerline + */ + $r = explode("\r\n" , $r); + if (!$uid_support) { + if (!preg_match("/^\\*\s+([0-9]+)\s+FETCH/iAU",$r[0], $regs)) { + set_up_language($squirrelmail_language); + echo '
' . + _("ERROR : Could not complete request.") . + '
' . + _("Unknown response from IMAP server: ") . ' 1.' . + $r[0] . "

\n"; + } else { + $id = $regs[1]; + } + } else { + if (!preg_match("/^\\*\s+([0-9]+)\s+FETCH.*UID\s+([0-9]+)\s+/iAU",$r[0], $regs)) { + set_up_language($squirrelmail_language); + echo '
' . + _("ERROR : Could not complete request.") . + '
' . + _("Unknown response from IMAP server: ") . ' 1.' . + $r[0] . "

\n"; + } else { + $id = $regs[2]; + } + } + $field = $r[1]; + $field = substr($field,strlen($field)+2); + $result[] = array($id,$field); + } + return $result; +} + + + + + /* * Returns a message array with all the information about a message. * See the documentation folder for more information about this array. @@ -643,9 +697,9 @@ function sqimap_get_message ($imap_stream, $id, $mailbox) { $bodystructure = implode('',$read); $msg = mime_structure($bodystructure,$flags); $read = sqimap_run_command ($imap_stream, "FETCH $id BODY[HEADER]", true, $response, $message, $uid_support); - $msg->addRFC822Header($read); - $msg->id = $id; - $msg->mailbox = $mailbox; + $rfc822_header = new rfc822_header(); + $rfc822_header->parseHeader($read); + $msg->rfc822_header = $rfc822_header; return $msg; }