Check that IMAP is turned on
If Not, Please enable.
Library Code
/** functions used for getting message **/ function flattenParts($messageParts, $flattenedParts = array(), $prefix = '', $index = 1, $fullPrefix = true) { foreach($messageParts as $part) { $flattenedParts[$prefix.$index] = $part; if(isset($part->parts)) { if($part->type == 2) { $flattenedParts = flattenParts($part->parts, $flattenedParts, $prefix.$index.'.', 0, false); } elseif($fullPrefix) { $flattenedParts = flattenParts($part->parts, $flattenedParts, $prefix.$index.'.'); } else { $flattenedParts = flattenParts($part->parts, $flattenedParts, $prefix); } unset($flattenedParts[$prefix.$index]->parts); } $index++; } return $flattenedParts; } function getPart($con, $messageNumber, $partNumber, $encoding) { $data = imap_fetchbody($con, $messageNumber, $partNumber); switch($encoding) { case 0: return $data; break; // 7BIT case 1: return $data; break;// 8BIT case 2: return $data; // BINARY break; case 3: return base64_decode($data); // BASE64 break; case 4: return quoted_printable_decode($data); // QUOTED_PRINTABLE break; case 5: return $data; // OTHER break; } } function getFilenameFromPart($part) { $filename = ''; if($part->ifdparameters) { foreach($part->dparameters as $object) { if(strtolower($object->attribute) == 'filename') { $filename = $object->value; } } } if(!$filename && $part->ifparameters) { foreach($part->parameters as $object) { if(strtolower($object->attribute) == 'name') { $filename = $object->value; } } } return $filename; } /** functions used for getting message **/
How to read specific message
$username = 'mygmail@gmail.com'; //Gmail address $password = 'gma12#@c'; //Gmail password error_reporting(0); $bodyId=35; //This is message Id //Read Message from indebox $hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; //Read Message from Trash // $hostname = '{imap.gmail.com:993/imap/ssl}[Gmail]/Trash'; //Read Message from Sent //$hostname = '{imap.gmail.com:993/imap/ssl}[Gmail]/Sent Mail'; $con = imap_open($hostname, $username, $password); $messageNumber = $bodyId; $structure = imap_fetchstructure($con, $messageNumber); //pr($structure);die; $message=''; if(!empty($structure->parts)){ $flattenedParts = flattenParts($structure->parts); foreach($flattenedParts as $partNumber => $part) { switch($part->type) { case 0: // the HTML or plain text part of the email $message = getPart($con, $messageNumber, $partNumber, $part->encoding); // now do something with the message, e.g. render it break; case 1: // multi-part headers, can ignore break; case 2: // attached message headers, can ignore break; case 3: // application case 4: // audio case 5: // image case 6: // video case 7: // other //pr($part); //echo " $$$$$"; $filename = getFilenameFromPart($part); if($filename) { // it's an attachment $attachment = getPart($con, $messageNumber, $partNumber, $part->encoding); if (empty($filename)) $filename = $filename; if (empty($filename)) $filename = time() . ".dat"; $folder = "attachment"; if (!is_dir($folder)) { mkdir($folder); } $fp = fopen("./" . $folder . "/" . $messageNumber . "-" . $filename, "w+"); fwrite($fp, $filename); fclose($fp); // now do something with the attachment, e.g. save it somewhere $message.=''; } break; } } }else{ $message = getPart($con, $messageNumber, 1, $structure->encoding); } if($message){ $message=$message; } echo $message; imap_close($con, CL_EXPUNGE);
' . $messageNumber . '-' . $filename . '