2013-02-22 2 views
2

Когда я получаю электронную почту с помощью imap в php, я получаю содержимое тела электронной почты, но я не могу извлечь встроенные изображения, вставленные и не прикрепленные в теле письма.Как извлечь встроенные изображения (не вложение) из электронной почты с помощью imap в PHP

+1

вы должны предоставить соответствующий код, который вы используете для извлечения сообщений электронной почты (без имени пользователя и пароля в комплекте). без этого вам не поможет, потому что неизвестно, какие функции/библиотеки вы используете. –

ответ

0

эй я думаю, что я получил решение

<?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); 
?> 
2

Поиск изображения в теле содержимого электронной почты.

Предположим, что ваш почтовый ящик $body, тогда вы можете получить URL-адрес изображения, используя preg_match. Используйте это выражение preg_match, чтобы получить источник изображения.

preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $body, $matches); 
Смежные вопросы