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

search for in the

imap_headers> <imap_header
[edit] Last updated: Fri, 25 May 2012

view this page in

imap_headerinfo

(PHP 4, PHP 5)

imap_headerinfoLit l'en-tête du message

Description

object imap_headerinfo ( resource $imap_stream , int $msg_number [, int $fromlength = 0 [, int $subjectlength = 0 [, string $defaulthost = NULL ]]] )

Récupère les informations sur un numéro de message donné en lisant ses en-têtes.

Liste de paramètres

imap_stream

Un flux IMAP retourné par la fonction imap_open().

msg_number

Le numéro du message

fromlength

Nombre de caractères pour la propriété fetchfrom. Doit être plus grand ou égal à 0.

subjectlength

Nombre de caractères pour la propriété fetchsubject. Doit être plus grand ou égal à 0.

defaulthost

Valeurs de retour

Retourne les informations dans un objet contenant les propriétés suivantes :

  • "toaddress" : toute la ligne d'en-tête to: jusqu'à 1024 caractères
  • "to" : un tableau d'objets issus de la ligne to: avec les propriétés suivantes : personal, adl, mailbox, et host
  • "fromaddress" : toute la ligne d'en-tête from: jusqu'à 1024 caractères
  • "from" : un tableau d'objets issus de la ligne From: avec les propriétés suivantes : personal, adl, mailbox, et host
  • "ccaddress" : toute la ligne d'en-tête cc: jusqu'à 1024 caractères
  • "cc" : un tableau d'objets issus de la ligne cc: avec les propriétés suivantes : personal, adl, mailbox, et host
  • "bccaddress" : toute la ligne d'en-tête bcc: jusqu'à 1024 caractères
  • "bcc" : un tableau d'objets issus de la ligne Bcc: avec les propriétés suivantes : personal, adl, mailbox, et host
  • "reply_toaddress" : toute la ligne d'en-tête Reply_to: jusqu'à 1024 caractères
  • "reply_to" : un tableau d'objets issus de la ligne Reply_to: avec les propriétés suivantes : personal, adl, mailbox, et host
  • "senderaddress" : toute la ligne d'en-tête Sender: jusqu'à 1024 caractères
  • "sender" : un tableau d'objets issus de la ligne Sender: avec les propriétés suivantes : personal, adl, mailbox, et host
  • "return_pathaddress" : toute la ligne d'en-tête Return-path: jusqu'à 1024 caractères
  • "return_path" : un tableau d'objets issus de la ligne Return-path: avec les propriétés suivantes : personal, adl, mailbox, et host
  • remail -
  • "date" : La date du message, telle que trouvée dans les en-têtes
  • "Date" : Identique à "date"
  • "subject" : Le sujet du message
  • "Subject" : Identique à "subject"
  • "in_reply_to" :
  • "message_id" :
  • "newsgroups" :
  • "followup_to" :
  • "references" :
  • "Recent" : R si le message est récent et lu, N si le message est récent et non lu, " " si le message n'est pas récent.
  • "Unseen" : U si le message est non lu ET non récent, " " si le message est non lu et récent
  • "Flagged" : F si le message contient un drapeau, " " sinon
  • "Answered" : A si une réponse a été faite à ce message, " " sinon
  • "Deleted" : D si le message est effacé, " " sinon
  • "Draft" : X si le message est un brouillon, " " sinon
  • "Msgno" : Le numéro du message
  • "MailDate" :
  • "Size" : La taille du message
  • "udate" : Date de l"envoi du message, sous la forme d"une date Unix
  • "fetchfrom" : Ligne "from" formatée afin de tenir dans fromlength caractères
  • "fetchsubject" : Ligne "subject" formatée afin de tenir dans subjectlength caractères

Voir aussi



imap_headers> <imap_header
[edit] Last updated: Fri, 25 May 2012
 
add a note add a note User Contributed Notes imap_headerinfo
andyltm 08-Jul-2010 03:17
When I was testing imap_headerinfo() with an e-mail that had multiple recipients (multiple e-mails in to to: and/or cc: field), I noticed that imap_headerinfo() was failing hard for me on PHP 5.2.10-2ubuntu6.4 with Suhosin-Patch 0.9.7 (cli).

Rather than providing me an array with each and every e-mail address listed in the to and/or cc fields, it was only providing me the first listed.  This was disappointing.

   [to] => Array
        (  
            [0] => stdClass Object
                (  
                    [mailbox] => game
                    [host] => blunts.com
                )
        )

Luckily, there was a cool workaround to this problem:

imap_rfc822_parse_headers(imap_fetchheader( string ); which subsequentally worked like a nice little pet would:

   [to] => Array
        (  
            [0] => stdClass Object
                (  
                    [mailbox] => game
                    [host] => blunts.com
                )
            [1] => stdClass Object
                (  
                    [mailbox] => dutch
                    [host] => masters.com
                )
        )

TL;DR:
So in other words, instead of imap_headerinfo() use imap_rfc822_parse_headers(imap_fetchheader()).

Hope this helps anyone else that runs into this issue from now into the future.  This post was suggested by people in #PHP on FreeNode IRC.
trinkaus at ttNetz dot de 31-Jan-2010 02:32
When i try to access the same mailbox through pop3 and through imap i get different update infomations.

1. Using imap
header->udate is not the same as strtotime($header->date)
<?php
$mBox
= imap_open("{host:143/imap/novalidate-cert}INBOX}", $username, $password); // open as imap
$header = imap_header($mBox, 1); // get first mails header
echo $header->udate;
echo
strtotime($header->date);
?>

1. Using pop3
header->udate is the same as strtotime($header->date)
<?php
$mBox
= imap_open("{host:110/pop3/novalidate-cert}INBOX}", $username, $password); // open as pop3
$header = imap_header($mBox, 1); // get first mails header
echo $header->udate;
echo
strtotime($header->date);
?>

I do not know why this is so, but for this reason, i use strtotime($header->date) together with other values to create my own message-UID because this seems to work independent from the protocol.
jahservant 13 at gmail dot com 08-Dec-2009 03:56
I'm not entirely sure why this is, but if you loop through all of the messages in a mailbox, calling imap_header() each time, you can significantly increase performance by calling imap_headers() first.

Compare this:
<?php
     $imap
= imap_open("{my.server.com:143}INBOX", "user", "pass");
    
$n_msgs = imap_num_msg($imap);
    
$s = microtime(true);
     for (
$i=0; $i<$n_msgs; $i++) {
         
$header = imap_header($imap, $i);
     }
    
$e = microtime(true);
     echo (
$e - $s);
    
imap_close($imap);
?>

With this:
<?php
     $imap
= imap_open("{my.server.com:143}INBOX", "user", "pass");
    
$n_msgs = imap_num_msg($imap);
 
/****** adding this line: ******/
    
imap_headers($imap)
 
/***************************/
    
$s = microtime(true);
     for (
$i=0; $i<$n_msgs; $i++) {
         
$header = imap_header($imap, $i);
     }
    
$e = microtime(true);
     echo (
$e - $s);
    
imap_close($imap);
?>

The performance difference, as I have tested on several boxes, connecting to several different servers, is that the second code snippet ALWAYS takes 1/2 the time, if not less.

Perhaps it is because imap_headers() retrieves all of the messages on one connection, whereas imap_header() has to make a new fetch request for each message??  I'm not sure WHY it is faster if imap_headers() is called first, but I do know that it is, so I thought I'd pass on the knowledge.  If anyone knows why this is, please let me know....
aeolianmeson at exoyiga dot blitzeclipse dot com 17-May-2009 10:56
I typically use UID's to identify messages, and recently discovered that the headers I had been pulling using this function and a message-number didn't match the UID's. Instead of worrying about it, I just began using imap_fetchheader() and imap_ rfc822_ parse_ headers() on its output. The only significant difference I immediately noticed was that there is no "udate" property, so I assigned one with the result of strtotime() on the 'date' property.

Dustin
php at spacefish dot biz 27-Jan-2009 10:57
I had to pass the msgid as array($msgid) instead of an integer. the error "Invalid messageID" is generated if i pass an integer.
ron at NOSPAM dot clicks2hits dot com 05-Nov-2008 05:51
Simple little code for checking gmail using headerinfo

<?php /* Created on: 11/3/2008 By Ron Hickey 6tx.net/gmail_mod
Gmail mod for admin panels or you can edit it and convert html results to XML for personal RSS reader */

// enter gmail username below e.g.--> $m_username = "yourusername";
$m_username = "";

// enter gmail password below e.g.--> $m_password = "yourpword";
$m_password = "";

// enter the number of unread messages you want to display from mailbox or
//enter 0 to display all unread messages e.g.--> $m_acs = 0;
$m_acs = 15;

// How far back in time do you want to search for unread messages - one month = 0 , two weeks = 1, one week = 2, three days = 3,
// one day = 4, six hours = 5 or one hour = 6 e.g.--> $m_t = 6;
$m_t = 2;

//----------->Nothing More to edit below
//open mailbox..........please
$m_mail = imap_open ("{imap.gmail.com:993/imap/ssl}INBOX", $m_username . "@gmail.com", $m_password)

// or throw a freakin error............you pig
or die("ERROR: " . imap_last_error());

// unix time gone by or is it bye.....its certanly not bi.......or is it? ......I dunno fooker
$m_gunixtp = array(2592000, 1209600, 604800, 259200, 86400, 21600, 3600);

// Date to start search
$m_gdmy = date('d-M-Y', time() - $m_gunixtp[$m_t]);

//search mailbox for unread messages since $m_t date
$m_search=imap_search ($m_mail, 'UNSEEN SINCE ' . $m_gdmy . '');

//If mailbox is empty......Display "No New Messages", else........ You got mail....oh joy
if($m_search < 1){
$m_empty = "No New Messages";}
else {

// Order results starting from newest message
rsort($m_search);

//if m_acs > 0 then limit results
if($m_acs > 0){
array_splice($m_search, $m_acs);
}

//loop it
foreach ($m_search as $what_ever) {

//get imap header info for obj thang
$obj_thang = imap_headerinfo($m_mail, $what_ever);

//Then spit it out below.........if you dont swallow
echo "<body bgcolor=D3D3D3><div align=center><br /><font face=Arial size=2 color=#800000>Message ID# " . $what_ever . "</font>

<table bgcolor=#D3D3D3 width=700 border=1 bordercolor=#000000 cellpadding=0 cellspacing=0>
<tr>
<td><table width=100% border=0>
<tr>
<td><table width=100% border=0>
<tr>
<td bgcolor=#F8F8FF><font face=Arial size=2 color=#800000>Date:</font> <font face=Arial size=2 color=#000000>"
. date("F j, Y, g:i a", $obj_thang->udate) . "</font></td>
<td bgcolor=#F8F8FF><font face=Arial size=2 color=#800000>From:</font> <font face=Arial size=2 color=#000000>"
. $obj_thang->fromaddress . "</font></td>
<td bgcolor=#F8F8FF><font face=Arial size=2 color=#800000>To:</font> <font face=Arial size=2 color=#000000>"
. $obj_thang->toaddress . " </font></td>
</tr>
<tr>
</table>
</td>
</tr><tr><td bgcolor=#F8F8FF><font face=Arial size=2 color=#800000>Subject:</font> <font face=Arial size=2 color=#000000>"
. $obj_thang->Subject . "</font></td></tr><tr>
</tr>
</table></td>
</tr>
</table><a href=http://gmail.com target=_blank><font face=Arial size=2 color=#800000>Login to read message</a></font><br /></div></body>"
;

}} echo
"<div align=center><font face=Arial size=4 color=#800000><b>" . $m_empty . "</b></font></div>";
//close mailbox bi by bye
imap_close($m_mail);
?>
scott at fuzzygroup dot com 11-Nov-2002 09:13
If you want to extract values from to, from, or other header elements, they are an object and you need to loop over them i.e.

$header = imap_header($mbox, $message_id);
$from = $header->from;
foreach ($from as $id => $object) {
    $fromname = $object->personal;
    $fromaddress = $object->mailbox . "@" . $object->host;
}

Would give you two variables for the friendly from and the smtp from address

Thanks to www.natrak.net for help with this

 
show source | credits | sitemap | contact | advertising | mirror sites