Retrieve Your Gmail Emails Using PHP and IMAP | Techbirds

Posted on: May 14, 2014 /

Categories: PHP / Author Name: Rahul

Grabbing emails from your Gmail account using PHP is probably easier than you think. Armed with PHP and its IMAP extension , you can retrieve emails from your Gmail account in no time! Just for fun, I’ll be using the MooTools Fx.Accordion plugin to display each email.

The CSS

div.toggler { border:1px solid #ccc; background:url(gmail2.jpg) 10px 12px #eee no-repeat; cursor:pointer; padding:10px 32px; } div.toggler .subject { font-weight:bold; } div.read { color:#666; } div.toggler .from, div.toggler .date { font-style:italic; font-size:11px; } div.body { padding:10px 20px; }

div.toggler { border:1px solid #ccc; background:url(gmail2.jpg) 10px 12px #eee no-repeat; cursor:pointer; padding:10px 32px; }

div.toggler .subject { font-weight:bold; }

div.read { color:#666; }

div.toggler .from, div.toggler .date { font-style:italic; font-size:11px; }

div.body { padding:10px 20px; }

The MooTools JavaScript

window.addEvent(‘domready’,function() { var togglers = $$(‘div.toggler’); if(togglers.length) var gmail = new Fx.Accordion(togglers,$$(‘div.body’)); togglers.addEvent(‘click’,function() { this.addClass(‘read’).removeClass(‘unread’); }); togglers[0].fireEvent(‘click’); //first one starts out read });

window.addEvent(‘domready’,function() {

    var togglers = $$(‘div.toggler’);

    if(togglers.length) var gmail = new Fx.Accordion(togglers,$$(‘div.body’));

    togglers.addEvent(‘click’,function() { this.addClass(‘read’).removeClass(‘unread’); });

    togglers[0].fireEvent(‘click’); //first one starts out read

});

The PHP

/* connect to gmail */ $hostname = ‘{imap.gmail.com:993/imap/ssl}INBOX’; $username = ‘[email protected]’; $password = ‘password’; /* try to connect */ $inbox = imap_open($hostname,$username,$password) or die(‘Cannot connect to Gmail: ‘ . imap_last_error()); /* grab emails */ $emails = imap_search($inbox,’ALL’); /* if emails are returned, cycle through each… */ if($emails) { /* begin output var */ $output = ”; /* put the newest emails on top */ rsort($emails); /* for every email… */ foreach($emails as $email_number) { /* get information specific to this email */ $overview = imap_fetch_overview($inbox,$email_number,0); $message = imap_fetchbody($inbox,$email_number,2); /* output the email header information */ $output.= ”; $output.= ”.$overview[0]->subject.’ ‘; $output.= ”.$overview[0]->from.”; $output.= ‘on ‘.$overview[0]->date.”; $output.= ”; /* output the email body */ $output.= ”.$message.”; } echo $output; } /* close the connection */ imap_close($inbox);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

/* connect to gmail */

$hostname = ‘{imap.gmail.com:993/imap/ssl}INBOX’;

$username = ‘[email protected]’;

$password = ‘password’;

/* try to connect */

$inbox = imap_open($hostname,$username,$password) or die(‘Cannot connect to Gmail: ‘ . imap_last_error());

/* grab emails */

$emails = imap_search($inbox,’ALL’);

/* if emails are returned, cycle through each… */

if($emails) {

    /* begin output var */

    $output = ”;

    /* put the newest emails on top */

    rsort($emails);

    /* for every email… */

    foreach($emails as $email_number) {

        /* get information specific to this email */

        $overview = imap_fetch_overview($inbox,$email_number,0);

        $message = imap_fetchbody($inbox,$email_number,2);

        /* output the email header information */

        $output.= ”;

        $output.= ”.$overview[0]->subject.’ ‘;

        $output.= ”.$overview[0]->from.”;

        $output.= ‘on ‘.$overview[0]->date.”;

        $output.= ”;

        /* output the email body */

        $output.= ”.$message.”;

    }

    echo $output;

}

/* close the connection */

imap_close($inbox);

With our individual username/password settings set, we connect to Gmail. Once connected, we request all emails. If we find emails, I reverse sort the emails so that the newest emails appear on top. For every email we receive, I output the subject and message in MooTools Fx.Accordion format.

2,242 total views, 1 views today

Share this Onfacebook-4627628twitter-3471354linkedin-2424992google-4368754