PHP 8.4.0 RC4 available for testing

imap_fetchheader

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_fetchheaderLiefert den Kopf einer Nachricht

Beschreibung

imap_fetchheader(IMAP\Connection $imap, int $message_num, int $flags = 0): string|false

Diese Funktion gibt den kompletten ungefilterten Kopf der angegebenen Nachricht gemäß » RFC2822 zurück.

Parameter-Liste

imap

Eine IMAP\Connection-Instanz.

message_num

Die Nummer der Nachricht

flags

Folgende Flags können in flags gesetzt werden:

  • FT_UID - message_num ist eine UID
  • FT_INTERNAL - Der zurückgegebene String ist im internen Format ohne Umwandlung der Zeilenenden in CRLF.
  • FT_PREFETCHTEXT - Der Textkörper der Nachricht wird zusammen mit dem Kopf zum Client übertragen. Dies vermeidet einen weiteren Zugriff auf den IMAP-Server, wenn die gesamte Nachricht bearbeitet werden soll (z. B. zum Abspeichern in einer lokalen Datei).

Rückgabewerte

Gibt den Kopf der angegebenen Nachricht als String zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.1.0 Der Parameter imap erwartet nun eine IMAP\Connection-Instanz; vorher wurde eine gültige imap-Ressource erwartet.

Siehe auch

add a note

User Contributed Notes 2 notes

up
7
rgagnon24 dot nospam at gmail dot com
14 years ago
Interesting that imap_headerinfo() does not allow a UID for the $msg_number field like all other fetching functions seem to allow.

If you want to use a UID to fetch the headers, use this two-step process:

<?php
/*
* assumes $mbox is your stream, and $uid is set
* properly. Proper error checking is up to you.
*/
$hText = imap_fetchbody($mbox, $uid, '0', FT_UID);
$headers = imap_rfc822_parse_headers($hText);
?>

The result is the same as the output of imap_headerinfo(), but you get to use the UID.
up
3
Jille at nomorecrap dot quis dot cx
16 years ago
<?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]);
?>
To Top