Как сохранить встроенное изображение в электронном письме, используя трубопровод с PHP?

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

0

Решение

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

--------------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 декодирует изображение

1

Другие решения

Это полный ответ, основанный на ответах 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));
}

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

0

По вопросам рекламы [email protected]