Reading Gmail With PHP IMAP
Hello my dear friends, Now this is quite interesting topic for all the PHP newbies and off course OLD bees..!! You might have seen many large PHP libraries that is designed to access emails and send emails. Well this one is going to be a lot more simpler than a HUGE MAIL Library.
To start with we should have the following minimum requirements
- PHP5
- IMAP enabled in your Gmail settings.
- PHP IMAP Extension is enabled [Its a default package with PHP]
Lets start with connection configuration.
/* connect to gmail */
$hostname = ‘{imap.gmail.com:993/imap/ssl}INBOX’;
$username = ‘username@gmail.com’;
$password = ‘password’;
Replace the values with the Gmail account details that you need to access. The host name need not be altered, its the standard gmail IMAP address.
Now lets connect to Gmail using IMAP.
$inbox = imap_open($hostname,$username,$password) or die(‘Cannot connect to Gmail: ‘ . imap_last_error());
Once connected you can access the inbox using imap_search() function
$emails = imap_search($inbox,’UNSEEN’);
// ALL – All emails
// UNSEEN – Gets you the message which is not yet read.
imap_search returns all the email ID’s which are unread and we need to iterate through the ID’s to read the emails
if($emails) { // Check if there are any emails
rsort($emails); /* Sorts the email such that the new emails comes first*/
/* Get the email one by one using ID */
foreach($emails as $email_number) {
// Get the email [headers] like FROM, TO, SUBJECT, DATE, SERVER etc
$overview = imap_fetch_overview($inbox,$email_number,0);
echo $overview[0]->subject.”\n”;// Get the Email Body
$message = imap_fetchbody($inbox,$email_number,1);echo $message; // Prints the message in Text format.
}}
/* close the connection */
imap_close($inbox);
Download Source file
Hope you have enjoyed this Post.!! Leave your comments.
15 Responses to Reading Gmail With PHP IMAP
Leave a Reply Cancel reply
Categories
- CSS (1)
- Freebies (1)
- JavaScript (7)
- Latest Work (3)
- Moo Tools (4)
- PHP (2)
- Web Development (5)
Recent Comments








It works. Thanks.
Hi Sophia. I’m glad that you found this useful.
I have recently found a class on this site [link removed by moderator] , it’s working and seems promising
Dear Clain, I can’t even log:
Warning: imap_open() [function.imap-open]: Couldn’t open stream {imap.gmail.com:993/imap/ssl}INBOX on line 10
Cannot connect to Gmail:
Can’t connect to gmail-imap.l.google.com,993:
Connection timed out
Windows Vista Pro, FireFox & Chrome
Thank you for code Max
Hi Max,
A firewall is preventing the local server in your system from accessing the Gmail server. You need to give permission for for the HTTP server to access the internet. Alternatively you can add exception to the port 993. This should fix the issue. You can try this code on an external production server and this should work well. There is no relation with the browsers and the PHP code, browsers just display the final outcome of a PHP code that runs on the server. Only HTML,CSS and JavaScript issues are related to browsers.
very nice article
Hi shanyhi,
Glad that you liked the article.
I got error in console “500 Internal Server Error”
Hi Priyanka,
I guess your server PHP configuration do not have PHP IMAP enabled. You can easily enable this by editing the php.ini file. Also you can install PHP IMAP Extension if its not installed by default. This will solve the internal server error.
I have some problems when try to receive the emails. When I run the script on server first i had receive error of type: to many login try or this one:
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please help.
Igor,
Did you made any modifications on the code? I guess you have the login option included in the code. Which is why you get “too many login” error.
Can you copy paste you code here so that I can review your code and get it fixed
Ok the problem is solved find the problem was with functio imap_search. I have one more question: If I send email let say with gmail, is possible after sending the email to append some new text inside the message which i have send?
An email send is send forever, you can never append any text at a later stage. It will be a security issue if this feature ever existed.
While trying this code i got the error like Couldn’t open stream {imap.gmail.com:993/imap/ssl}INBOX and Can’t connect to gmail-imap.l.google.com,993: Connection timed out. Please anybody help me to fix this.
You are not connected to the internet, or a firewall is preventing PHP [Apache] server from connecting to gmail server. Its a connectivity problem. Please check the firewall and connection settings.