PHP Conference Nagoya 2025

imap_fetchheader

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

imap_fetchheaderBir iletinin başlığını döndürür

Açıklama

imap_fetchheader(IMAP\Connection $imap, int $ileti_num, int $seçenekler = 0): string|false

Belirtilen iletinin » RFC2822 biçemli başlığının tamamını herhangi bir işlemden geçirmeden döndürür.

Bağımsız Değişkenler

imap

IMAP\Connection nesnesi.

ileti_num

İleti numarası.

seçenekler

Olası seçenekler:

  • FT_UID - The iletinum bağımsız değişkeninin bir eşsiz kimlik olarak ele alınmasını sağlar.
  • FT_INTERNAL - Satırları CRLF'lerle meşrulaştırılmadan dizgenin "dahili" biçemiyle döndürülmesini sağlar.
  • FT_PREFETCHTEXT - Aynı anda ileti metninin de alınmasını sağlar. İletinin tam metni istendiği durumda (içeriğin yerel bir dosyaya kaydedilmek istenmesi gibi) IMAP bağlantısında ek bir RTT (gecikme) oluşmasını engeller.

Dönen Değerler

Belirtilen iletinin başlığını içeren bir dizge, başarısızlık durumunda false döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.1.0 imap bağımsız değişkeni artık IMAP\Connection nesnesi kabul ediyor, evvelce resource türünde geçerli bir imap değeri kabul ederdi.

Ayrıca Bakınız

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