Search code examples
phpimap

How to extract inline images(not attachment) from an email using imap in PHP


When i fetch email using imap in php, i get email body content but i m not able to extract inline images pasted and not attached in the email body.


Solution

  • hey i think i got a solution

    <?php
       $hostname = '{myserver/pop3/novalidate-cert}INBOX';
       $username = 'username';
       $password = 'password';
    
       /* try to connect */
       $inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Tiriyo: ' . imap_last_error());
       $msgno = 0; //message id
       $no_of_occurences = 0;
       $intStatic = 2;//to initialize the mail body section
    
       $decode = imap_fetchbody($mbox, $msgno , "");    
       $no_of_occurences = substr_count($decode,"Content-Transfer-Encoding: base64");//to get the no of images
       if($no_of_occurences > 0){
            for($i = 0; $i < $no_of_occurences; $i++){  
                 $strChange =   strval($intStatic+$i);
                 $decode = imap_fetchbody($mbox, $msgno , $strChange);//to get the base64 encoded string for the image
                 $data = base64_decode($decode);
                 $fName = time()."_".$strChange . '.gif';
                 $file = $fName;
                 $success = file_put_contents($file, $data);        //creates the physical image    
            }           
        }
        imap_close($inbox);
     ?>