Read my gmail emails in PHP

I am using this litle snippet I found to collect the header of the unread emails in my gmail account but the "From" often shows as just a name and not as the email address it was from...

Anyone know how I could get that info also so it said "From: Name <emailaddress@whateverdomain.com>" ?


$m_username = "uname";
$m_password = "password";
$m_acs = 20;
 
$m_t = 2;
 
$m_mail = imap_open ("{imap.gmail.com:993/imap/ssl}INBOX", $m_username . "@gmail.com", $m_password)
 
or die("ERROR: " . imap_last_error());
 
$m_gunixtp = array(2592000, 1209600, 604800, 259200, 86400, 21600, 3600);
 
$m_gdmy = date('d-M-Y', time() - $m_gunixtp[$m_t]);
 
$m_search=imap_search ($m_mail, 'UNSEEN SINCE ' . $m_gdmy . '');
echo "<hr><center><font color=ffffff>Here are your first $m_acs emails</font></center>";
 
if($m_search < 1){
$m_empty = "No New Messages";}
else {
 
rsort($m_search);
 
if($m_acs > 0){
array_splice($m_search, $m_acs);
}
 
foreach ($m_search as $what_ever ) {
$fromaddress1 = $obj_thang->mailbox . "@" . $object->host;
$obj_thang = imap_headerinfo($m_mail, $what_ever);
 
echo "<div align=center><br /><font face=Arial size=2 color=#ffffff>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 . " or  $fromaddress1</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>
$header = imap_header($mbox, $message_id);
$from = $header->from;
 
</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);

Open in new window

Riviera1Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Chris HarteConnect With a Mentor ThaumaturgeCommented:
That should do it. Your email reader marks it as read or not, it is not a property of the email.

$m_username = "uname";
$m_password = "password";
$m_acs = 20;
 
$m_t = 2;
 
$m_mail = imap_open ("{imap.gmail.com:993/imap/ssl}INBOX", $m_username . "@gmail.com", $m_password)
 
or die("ERROR: " . imap_last_error());
 
$m_gunixtp = array(2592000, 1209600, 604800, 259200, 86400, 21600, 3600);
 
$m_gdmy = date('d-M-Y', time() - $m_gunixtp[$m_t]);
 
$m_search=imap_search ($m_mail, 'UNSEEN SINCE ' . $m_gdmy . '');
echo "<hr><center><font color=ffffff>Here are your first $m_acs emails</font></center>";
 
if($m_search < 1)
{
    $m_empty = "No New Messages";
}
else
{
 
    rsort($m_search);
 
    if($m_acs > 0)
    {
        array_splice($m_search, $m_acs);
    }
 
    foreach ($m_search as $what_ever )
    {
        $fromaddress1 = $obj_thang->mailbox . "@" . $object->host;
        $obj_thang = imap_headerinfo($m_mail, $what_ever);
 
         
        $from = $header->from;
 
        foreach ($from as $id => $object)
        {
            $fromname = $object->personal;
            $fromaddress = $object->mailbox . "@" . $object->host;
        }
 
 
 
        echo "<div align=center><br /><font face=Arial size=2 color=#ffffff>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 . " or  $fromaddress1</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>               
 
        $fromname $fromaddress        
 
        </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);

Open in new window

0
 
Chris HarteThaumaturgeCommented:
The header is an object. To select values you have to loop over them.
$header = imap_header($mbox, $message_id);
 
$from = $header->from;
 
foreach ($from as $id => $object) 
{
    $fromname = $object->personal;
    $fromaddress = $object->mailbox . "@" . $object->host;
}

Open in new window

0
 
manavsiCommented:
the above is right... Just in case u need for info, chk this link: www.electrictoolbox.com/php-imap-download-email-gmail/

HTH
Manavsi
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
Riviera1Author Commented:
Hi MunterMan

Yes I found that solution thanks elsewhere but where would it fit into the existing script?

Would it also mark the mail as read?

Thx
0
 
Riviera1Author Commented:
Oops ;)

Warning: Invalid argument supplied for foreach()

At the line:

foreach ($from as $id => $object)


$m_acs = 20;
 
$m_t = 2;
 
$m_mail = imap_open ("{imap.gmail.com:993/imap/ssl}INBOX", $m_username . "@gmail.com", $m_password)
 
or die("ERROR: " . imap_last_error());
 
$m_gunixtp = array(2592000, 1209600, 604800, 259200, 86400, 21600, 3600);
 
$m_gdmy = date('d-M-Y', time() - $m_gunixtp[$m_t]);
 
$m_search=imap_search ($m_mail, 'UNSEEN SINCE ' . $m_gdmy . '');
echo "<hr><center><font color=ffffff>Here are your first $m_acs emails</font></center>";
 
if($m_search < 1)
{
    $m_empty = "No New Messages";
}
else
{
 
    rsort($m_search);
 
    if($m_acs > 0)
    {
        array_splice($m_search, $m_acs);
    }
 
    foreach ($m_search as $what_ever )
    {
        $obj_thang = imap_headerinfo($m_mail, $what_ever);
 
 
        $from = $header->from;
 
        foreach ($from as $id => $object)
        {
            $fromname = $object->personal;
            $fromaddress = $object->mailbox . "@" . $object->host;
        }
 
 
 
        echo "<div align=center><br /><font face=Arial size=2 color=#ffffff>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 . " or  $fromaddress1</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>
 
</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);

Open in new window

0
 
Chris HarteThaumaturgeCommented:
That will teach me to cut and paste
Replace
$from = $header->from;

with
$from = $obj_thang->from;
0
 
Riviera1Author Commented:
Great help thanks :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.