From 767ace1fe6e1680d938c0a47c6f0e27512df84f8 Mon Sep 17 00:00:00 2001 From: stekkel Date: Tue, 6 Aug 2002 22:46:03 +0000 Subject: [PATCH] rfc822_header git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@3262 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/imap_messages.php | 60 +++++++++++++++++++++++++++++++++++-- functions/mime.php | 19 ++++++------ 2 files changed, 67 insertions(+), 12 deletions(-) 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; } diff --git a/functions/mime.php b/functions/mime.php index 8717a5b6..cc44fd61 100644 --- a/functions/mime.php +++ b/functions/mime.php @@ -318,7 +318,6 @@ function formatBody($imap_stream, $message, $color, $wrap_at, $ent_num, $id, $ma if (($body_message->header->type0 == 'text') || ($body_message->header->type0 == 'rfc822')) { $body = mime_fetch_body ($imap_stream, $id, $ent_num); - $body = decodeBody($body, $body_message->header->encoding); $hookResults = do_hook("message_body", $body); $body = $hookResults[1]; @@ -328,12 +327,14 @@ function formatBody($imap_stream, $message, $color, $wrap_at, $ent_num, $id, $ma if ($body_message->header->type1 == 'html') { if ( $show_html_default <> 1 ) { $body = strip_tags( $body ); - translateText($body, $wrap_at, $body_message->header->charset); + translateText($body, $wrap_at, + $body_message->header->getParameter['charset']); } else { $body = magicHTML( $body, $id, $message, $mailbox ); } } else { - translateText($body, $wrap_at, $body_message->header->charset); + translateText($body, $wrap_at, + $body_message->header->getParameter('charset')); } if ($has_unsafe_images) { @@ -367,14 +368,14 @@ function formatAttachments($message, $exclude_id, $mailbox, $id) { foreach ($att_ar as $att) { - $ent = urlencode($att->entity_id); + $ent = urldecode($att->entity_id); $header = $att->header; $type0 = strtolower($header->type0); $type1 = strtolower($header->type1); $name = ''; if ($type0 =='message' && $type1 == 'rfc822') { - - $filename = decodeHeader($header->subject); + $rfc822_header = $att->rfc822_header; + $filename = decodeHeader($rfc822_header->subject); $display_filename = $filename; $DefaultLink = @@ -407,7 +408,7 @@ function formatAttachments($message, $exclude_id, $mailbox, $id) { '  ' . "[ $type0/$type1 ] " . ''; - $from_o = $header->from; + $from_o = $rfc822_header->from; if (is_object($from_o)) { $from_name = $from_o->getAddress(false); } else { @@ -428,9 +429,9 @@ function formatAttachments($message, $exclude_id, $mailbox, $id) { } unset($Links); } else { - $filename = decodeHeader($header->filename); + $filename = decodeHeader($header->getParameter('filename')); if (trim($filename) == '') { - $name = decodeHeader($header->name); + $name = decodeHeader($header->getParameter('name')); if (trim($name) == '') { if ( trim( $header->id ) == '' ) $display_filename = 'untitled-[' . $ent . ']' ; -- 2.25.1