2015-05-12 3 views
0

У меня есть сервер с настройками электронной почты. Я смог сохранить вложения электронной почты, используя this, но когда я отправляю картинку с моего телефона, например, она не будет сохранена, потому что изображение является «встроенным», а не как вложение. Есть ли способ сохранить встроенную картинку?Как сохранить встроенное изображение в электронном письме, используя трубопровод с PHP?

+1

Что вы имеете в виду, встроенный? ''? –

+0

Я так предполагаю. Это одно и то же? https://sendgrid.com/blog/embedding-images-emails-facts/ –

+0

Когда вы говорите «__this__», вы ожидаете, что мы прочитаем всю страницу? –

ответ

0

Это полный ответ, основанный от ответа exussum в:

//create the array of base64 strings 
    $pieces = explode("Content-Transfer-Encoding: base64", $email); 
    array_shift($pieces); 
    foreach ($pieces as &$value) { 
     $newString = strstr($value, "\n\n"); 
     $newString = substr($newString, 0, strpos($newString, '--')); 
     $PicturesData[] = $newString; 
    } 

    //save each image 
    foreach ($PicturesData as &$value) { 
     $name = time() . ".png"; 
     while(file_exists("pics/" . $name)) { 
      $name = time() . ".png"; 
     } 
     file_put_contents("directory/".$name, base64_decode($value)); 
    } 

Это создаст массив изображений, встроенные в электронной почте и сохранить каждое изображение как сиситемы аренда имя.

1

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

--------------090909040108020409080705 
Content-Type: image/png; 
name="fideghfb.png" 
Content-Transfer-Encoding: base64 
Content-ID: <[email protected]> 
Content-Disposition: inline; 
filename="fideghfb.png" 

BASE64 
--------------090909040108020409080705-- 

Просто возьмите основание 64 от того, ваш ищет блок с Content-Disposition: inline;, а затем base64 декодирование изображения

+0

Спасибо! Итак, как мне сохранить это изображение? –

+0

После того, как у вас есть база 64, декодируйте ее выход – exussum