Solved

Read my gmail emails in PHP

Posted on 2009-05-20
7
2,565 Views
Last Modified: 2013-11-29
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

0
Comment
Question by:Riviera1
  • 3
  • 3
7 Comments
 
LVL 16

Expert Comment

by:Chris Harte
Comment Utility
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
 
LVL 4

Expert Comment

by:manavsi
Comment Utility
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
 

Author Comment

by:Riviera1
Comment Utility
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
How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

 
LVL 16

Accepted Solution

by:
Chris Harte earned 500 total points
Comment Utility
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
 

Author Comment

by:Riviera1
Comment Utility
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
 
LVL 16

Expert Comment

by:Chris Harte
Comment Utility
That will teach me to cut and paste
Replace
$from = $header->from;

with
$from = $obj_thang->from;
0
 

Author Closing Comment

by:Riviera1
Comment Utility
Great help thanks :)
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Generating table dynamically is the most common issue faced by php developers.... So it seems there is a need of an article that explains the basic concept of generating tables dynamically. It just requires a basic knowledge of html and little maths…
This article discusses how to create an extensible mechanism for linked drop downs.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now