Last updated on November 24, 2014
Recently i have worked on language translation project for that i need to read emails using PHP From the gamil inbox based on the email content i had created projects in the database…fortunately reading email from the gmail was easier than i think thanks to IMAP extension.
Here is the simple example for retrieving emails from the gmail:
NOTE: This will work only if you meet the fallowing requirements
- PHP version should be PHP5 or latest
- PHP IMAP Extension should be enabled in your PHP installation
- IMAP should be enabled in your Gmail settings.
How to enable IMAP in PHP
How to Enable IMAP in XAMPP
IMAP is not enabled by default in Xampp distribution, so to enable it go to the file "\xampp\php\php.ini"
and search for ";extension=php_imap.dll"
and by removing the beginning semicolon at the line ,it’s get enabled ,it should be: extension=php_imap.dll
.
How to enable IMAP in Linux
You can install the PHP5 IMAP module with this command :
apt-get install php5-imap
However it’s not enabled by default so enable it with:
php5enmod imap
To see the changes ,restart Apache
service apache2 restart
Here is the PHP script for retrieve Your Gmail Emails Using IMAP.
set_time_limit(4000); // Connect to gmail $imapPath = '{imap.gmail.com:993/imap/ssl}INBOX'; $username = '[email protected]'; $password = 'your_gmail_password'; // try to connect $inbox = imap_open($imapPath,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error()); /* ALL - return all messages matching the rest of the criteria ANSWERED - match messages with the \\ANSWERED flag set BCC "string" - match messages with "string" in the Bcc: field BEFORE "date" - match messages with Date: before "date" BODY "string" - match messages with "string" in the body of the message CC "string" - match messages with "string" in the Cc: field DELETED - match deleted messages FLAGGED - match messages with the \\FLAGGED (sometimes referred to as Important or Urgent) flag set FROM "string" - match messages with "string" in the From: field KEYWORD "string" - match messages with "string" as a keyword NEW - match new messages OLD - match old messages ON "date" - match messages with Date: matching "date" RECENT - match messages with the \\RECENT flag set SEEN - match messages that have been read (the \\SEEN flag is set) SINCE "date" - match messages with Date: after "date" SUBJECT "string" - match messages with "string" in the Subject: TEXT "string" - match messages with text "string" TO "string" - match messages with "string" in the To: UNANSWERED - match messages that have not been answered UNDELETED - match messages that are not deleted UNFLAGGED - match messages that are not flagged UNKEYWORD "string" - match messages that do not have the keyword "string" UNSEEN - match messages which have not been read yet*/ // search and get unseen emails, function will return email ids $emails = imap_search($inbox,'UNSEEN'); $output = ''; foreach($emails as $mail) { $headerInfo = imap_headerinfo($inbox,$mail); $output .= $headerInfo->subject.'
'; $output .= $headerInfo->toaddress.'
'; $output .= $headerInfo->date.'
'; $output .= $headerInfo->fromaddress.'
'; $output .= $headerInfo->reply_toaddress.'
'; $emailStructure = imap_fetchstructure($inbox,$mail); if(!isset($emailStructure->parts)) { $output .= imap_body($inbox, $mail, FT_PEEK); } else { // } echo $output; $output = ''; } // colse the connection imap_expunge($inbox); imap_close($inbox);