Создание универсальной функции обработки изображений электронной почты для нескольких клиентов - PullRequest
2 голосов
/ 10 февраля 2012

У меня есть набор сценариев, которые управляют учетной записью электронной почты и отправляют их в таблицу MySQL.Большинство почтовых клиентов обрабатывают изображения, вставленные в тела, как cid: , и браузер не может просматривать эти ссылки.

Итак, у меня есть набор кода, который я протестировал в Outlook 2010, который будет извлекать изображенияиз электронной почты и сохранить их в каталог.У меня проблема в том, что электронные письма будут отправляться с использованием различных почтовых клиентов, и до сих пор я успешно обрабатывал только изображения Outlook 2010.Как я могу создать набор функций для успешного управления ими?Как своего рода универсальная функция изображения: Блок моего кода:

/***************************** 1st image in email**********************************/
if (preg_match('/cid:([^"@]*).(png|jpg|jpeg|gif|bmp)@([^"]*)/', $html_part, $m)){

$find = '/cid:'.$m[1].'.'.$m[2].'@([^"]*)/';

if ($m[2] == 'png') $replace = $png1;
if ($m[2] == 'jpg') $replace = $jpg1;
if ($m[2] == 'gif') $replace = $gif1;
if ($m[2] == 'bmp') $replace = $bmp1;
if ($m[2] == 'jpeg') $replace = $jpeg1;
$html_part = preg_replace($find, $replace, $html_part);
}

/***************************** 2nd image in email**********************************/                        
if (preg_match('/cid:([^"@]*).(png|jpg|jpeg|gif|bmp)@([^"]*)/', $html_part, $m)){

$find = '/cid:'.$m[1].'.'.$m[2].'@([^"]*)/';

if ($m[2] == 'png') $replace = $png2;
if ($m[2] == 'jpg') $replace = $jpg2;
if ($m[2] == 'gif') $replace = $gif2;
if ($m[2] == 'bmp') $replace = $bmp2;
if ($m[2] == 'jpeg') $replace = $jpeg2;

$html_part = preg_replace($find, $replace, $html_part);
}

Но когда дело доходит до других почтовых клиентов, которые я тестировал: Почта Windows Live:

src=3D"cid:813DEC0642E941F0845447B680DA566A@BrinardHP"

Hotmail:

src="https://*****.storage.live.com/y1pZinLnQnaoBClW=RMsQ5sAzEF1H4HGond-KoaAjdcEX0GCp9HzrWa2RSJwI9ngxR7WIub5M9Ps810/cloudsprite.=jpg"

почтовое приложение iPhone по умолчанию

src="cid:1D8E2297-F260-4555-8223-304A9DB08CC5/image.jpeg"

Поэтому вместо того, чтобы тратить дни, возможно, на кодирование обработчика изображения на основе определенного почтового клиента, cid: ссылки, как я могу сказать, циклпросмотрите все изображения в только что сохраненном каталоге и примените их правильно к их позициям в теле письма.Таким образом, ссылки $ replace - это гиперссылки на изображения, которые были сохранены в каталоге.Спасибо.

...