PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

imap_fetchstructure> <imap_fetchbody
Last updated: Fri, 05 Sep 2008

view this page in

imap_fetchheader

(PHP 4, PHP 5)

imap_fetchheaderLiefert den Kopf einer Nachricht

Beschreibung

string imap_fetchheader ( resource $imap_stream , int $msg_number [, int $options ] )

Diese Funktion liefert den kompletten ungefilterten Kopf der angegebenen Nachricht gemäß » RFC2822.

Parameter-Liste

imap_stream

Eine von imap_open() zurückgegebene IMAP-Verbindung.

msg_number

Die Nachrichtennummer

options

Folgende Flags können in options gesetzt werden:

  • FT_UID - msgno ist eine UID
  • FT_INTERNAL - Rückgaben im internen Format ohne jede Umwandlung von Zeilenenden
  • FT_PREFETCHTEXT Der Körper der Nachricht wird zusammen mit dem Kopf zum Client übertragen. Dies vermeidet einen weitern Zugriff auf den IMAP Server wenn die gesamte Nachricht bearbeitet werden soll (z.B. zum Abspeichern in einer lokalen Datei)

Rückgabewerte

Returns the header of the specified message as a text string.



imap_fetchstructure> <imap_fetchbody
Last updated: Fri, 05 Sep 2008
 
add a note add a note User Contributed Notes
imap_fetchheader
Jille at nomorecrap dot quis dot cx
06-Apr-2008 03:15
<?PHP
$headers
=imap_fetchheader($imap, $msgid);
preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $headers, $matches);
?>

Works quite well for splitting headers,
$matches will contain 3 arrays:
$matches[0] are the full-lines (To: Jille@devnull.quis.cx\r\n)
$matches[1] will be the header (To)
$matches[2] will be the value (Jille@devnull.quis.cx)

In multi-line values the 'multilining is not stripped!'
this could be achieved with something like:
<?PHP
preg_replace
('/\r\n\s+/m', '', $matches[2]);
?>
onofabio at gmail dot com
07-Mar-2008 03:18
This function ignore that some header value have multiple lines...

<?php
   
// connecting to imap mailserver
   
$connection = @imap_open("{localhost:143/imap}INBOX", "your_username", "your_password");

   
// get imap_fetch header and put single lines into array
   
$header = explode("\n", imap_fetchheader($connection, 1));

   
// browse array for additional headers
   
if (is_array($header) && count($header)) {
       
$head = array();
        foreach(
$header as $line) {
           
// is line with additional header?
           
if (eregi("^X-", $line)) {
               
// separate name and value
               
eregi("^([^:]*): (.*)", $line, $arg);
               
$head[$arg[1]] = $arg[2];
            }
        }
    }

   
// now are all contained additional headers in array $head
?>

I write this simple function....

$mbox = imap_open("{localhost:143/imap}INBOX", "your_username", "your_password");
$mid=1 // Message id

// Get headers
$header = imap_fetchheader($mbox, $mid);

// Split on \n
$h_array=split("\n",$header);

foreach ( $h_array as $h ) {

    // Check if row start with a char
    if ( preg_match("/^[A-Z]/i", $h )) {

        $tmp = split(":",$h);
    $header_name = $tmp[0];
    $header_value = $tmp[1];
               
    $headers[$header_name] = $header_value;
       
    } else {
        // Append row to previous field
    $headers[$header_name] = $header_value . $h;
    }

}
Max Geiger
08-Mar-2007 03:59
If you call the function with the bitmask-parameter FT_PREFETCHTEXT the /Seen flag of the message will be set.
dj_doktor at upskirt dot cz
03-Apr-2005 07:17
I spend lot of time find out how I can detect messages with
different priorities. When I read users notes I remember
function imap_fetchheader which show header of message
and additional headers too. Because I'm so lazy to work with
regular expressions I required my frend for writing code
- thanx Znouza.
And there is... :)

<?php
   
// connecting to imap mailserver
   
$connection = @imap_open("{localhost:143/imap}INBOX", "your_username", "your_password");

   
// get imap_fetch header and put single lines into array
   
$header = explode("\n", imap_fetchheader($connection, 1));

   
// browse array for additional headers
   
if (is_array($header) && count($header)) {
       
$head = array();
        foreach(
$header as $line) {
           
// is line with additional header?
           
if (eregi("^X-", $line)) {
               
// separate name and value
               
eregi("^([^:]*): (.*)", $line, $arg);
               
$head[$arg[1]] = $arg[2];
            }
        }
    }

   
// now are all contained additional headers in array $head
?>

imap_fetchstructure> <imap_fetchbody
Last updated: Fri, 05 Sep 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites