Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : IMAP, POP3 and NNTP Functions : imap_header

imap_header

Alias of imap_headerinfo (PHP 4, PHP 5)


Code Examples / Notes » imap_header

g dot li

Yes, the ref. is quit confusing (to me at least). It will be wise (after spent many hours) to test the type of variable first before it disappointe you. I find $header->From retrurns String, $header->from returns array and its elements are object. Therefore if you want get sender's name for example,
you need: $from = $header->from;

if (is_array($from)){

while(list($key, $val) = each($from)) {

echo $from[0]->personal;
echo $from[0]->adl;
echo $from[0]->mailbox;
echo $from[0]->host;
}
}
you will find $header_from is an one element array and this element is an object. Hope anyone else will not wast time here to figure out why retrun is empty.


gungp720

To convert date format from mail header to dd/mm/yyyy H:i use this :
<?
$tgl1 = strtotime($msg->date); //convert to timestamp
$tgl2 = date("d/m/Y H:i",$tgl1); //format date from timestamp
echo $tgl2;
?>
hope this help :)


jwilson

It is explained else where on the site but something I struggled with.
To find the size of a message use:
$sizefeed1 = imap_fetchstructure($feed,$messagenumber);
$sizefeed2 = $sizefeed1->bytes;
$size = "$sizefeed2 bytes";


mayorga

If you want to retrieve From address, not From name, use this:
$from=$header->from; $fromaddr=sprintf("%s@%s",$from[0]->mailbox,$from[0]->host);


shader76

if you need to grab other fields that are not parsed out by imap_header then use
imap_fetchheader to retrieve the entire email header and do the work yourself.


alpha_lam

I've got a problem when facing some encoded subject or from header like:
=?big5?B?uXG4o7ZXpEg3MTEw?= or
=?iso-8859-1?Q?A7=EB=B2=BC=B6=7D=A9l=21?=
this problem only appears when the poster is using non-Misco$oft reader, and i lastly find the way to solve.
For the =?big5?B?, the encode method is base64, so you can use base64_decode to decode it to the original one, you can use the following to check and decode:
<?php
if(ereg("=\?.{0,}\?[Bb]\?",$strHead)){
 $arrHead=split("=\?.{0,}\?[Bb]\?",$strHead);
 while(list($key,$value)=each($arrHead)){
   if(ereg("\?=",$value)){
     $arrTemp=split("\?=",$value);
     $arrTemp[0]=base64_decode($arrTemp[0]);
     $arrHead[$key]=join("",$arrTemp);
   }
 }
 $strHead=join("",$arrHead);
}
?>
For =?iso-8859-1?Q?, it uses quoted printable to encode, you can use quoted_printable_decode to decode, example:
<?php
if(ereg("=\?.{0,}\?Q\?",$strHead)){
 $strHead=quoted_printable_decode($strHead);
 $strHead=ereg_replace("=\?.{0,}\?[Qq]\?","",$strHead);
 $strHead=ereg_replace("\?=","",$strHead);
}
?>


15-may-2002 01:08

I just wanted to state what all these variables were producing considering it isnt documented anywhere that I have been able to find on this site:
the object that imap_mailboxmsgs returns has the following fields for the pop3 driver:
array(
    Unread =>
    Deleted =>
    Nmsgs =>  
    Size=>      
    Date=>    
    Driver=>  
    Mailbox=>
    Recent=>
)
imap_header returns the following array for the pop3 driver:
stdClass Object (
   date=>
   Date=>
   subject=>
   Subject=>
   toaddress=>
   to=> array stdClass Object (
       mailbox=>
       host=>
    )
   fromaddress=>
   from=> array stdClass Object (
       personal=>
       mailbox=>
       host=>
   )
   reply_toaddress=>
   reply_to=> array stdClass Object (
       personal=>
       mailbox=>
       host=>
   )
   senderaddress=>
   sender => array stdClass Object (
       personal=>
       mailbox=>
       host=>
   )
   Recent=>
   Unseen=>
   Flagged=>
   Answered=>
   Deleted=>
   Draft=>
   Msgno=>
   MailDate=>
   Size=>
   udate=>
)
Also, if you are using a pop3 server and you are having difficulties deleting messages, you will need to call imap_expunge immediately after your call to imap_delete. (this was posted somewhere else..  thanks for that!!)
feel free to drop me a line if this helped you.  Happy coding.


lint

here's something even easier:

<pre>
$header = imap_header($mail_connection, msgnum);
$from = htmlspecialchars($header->fromaddress);
echo $from;
</pre>


hnesland

A way to print your own specified date:
$date = date('d F Y (G:i:s)',
strtotime(strip_tags($headerinfo->udate)));


khigashi dot oang

A simple way to fix encoded subject/from header problem and strip whitespace:
<?php
function fix_text($var){
if(ereg("=\?.{0,}\?[Bb]\?",$var)){
$var = split("=\?.{0,}\?[Bb]\?",$var);
while(list($key,$value)=each($var)){
if(ereg("\?=",$value)){
$arrTemp=split("\?=",$value);
$arrTemp[0]=base64_decode($arrTemp[0]);
$var[$key]=join("",$arrTemp);
}}
$var=join("",$var);
}
if(ereg("=\?.{0,}\?Q\?",$var)){
$var = quoted_printable_decode($var);
$var = ereg_replace("=\?.{0,}\?[Qq]\?","",$var);
$var = ereg_replace("\?=","",$var);
}
return trim($var);
}
?>
Ex.
<?php
//For =?iso-8859-1?Q Problem
echo $title;
//show: =?iso-8859-1?Q?Boletim:_Motiva=E7=E3o
//,_Gest=E3o_&_Vendas_-_Gilcl=E9r_Regi?=
//=?iso-8859-1?Q?na?=
echo fix_text($title);
//show: na?
?>


Change Language


Follow Navioo On Twitter
imap_8bit
imap_alerts
imap_append
imap_base64
imap_binary
imap_body
imap_bodystruct
imap_check
imap_clearflag_full
imap_close
imap_createmailbox
imap_delete
imap_deletemailbox
imap_errors
imap_expunge
imap_fetch_overview
imap_fetchbody
imap_fetchheader
imap_fetchstructure
imap_get_quota
imap_get_quotaroot
imap_getacl
imap_getmailboxes
imap_getsubscribed
imap_header
imap_headerinfo
imap_headers
imap_last_error
imap_list
imap_listmailbox
imap_listscan
imap_listsubscribed
imap_lsub
imap_mail_compose
imap_mail_copy
imap_mail_move
imap_mail
imap_mailboxmsginfo
imap_mime_header_decode
imap_msgno
imap_num_msg
imap_num_recent
imap_open
imap_ping
imap_qprint
imap_renamemailbox
imap_reopen
imap_rfc822_parse_adrlist
imap_rfc822_parse_headers
imap_rfc822_write_address
imap_savebody
imap_scanmailbox
imap_search
imap_set_quota
imap_setacl
imap_setflag_full
imap_sort
imap_status
imap_subscribe
imap_thread
imap_timeout
imap_uid
imap_undelete
imap_unsubscribe
imap_utf7_decode
imap_utf7_encode
imap_utf8
eXTReMe Tracker