HefneR
Новичок
Почтовый клиент не определяет Content-ID
Привет всему вашему сообществу. Столкнулся с такой проблемой, уже совсем из рук выбился - отправляю MIME письмо с HTML с вложенными изображениями. Изображениям присваиваю Content-ID и затем обращаюсь к ним в теле HTML для вывода изображений. Суть проблемы в том, что почтовые клиенты не всегда правильно отображают изображения. В основном это почтовые web-движки. Остальные программы типа Outlook Express, Outlook из Offic'a всё отображают просто супер. Специально зарегил себе ящики на mail, rambler, ya.ru - из них более-менее отображает mail.ru. Яндекс отображает только <img src='cid:x'>, но не отображает backround='cid:y'. Rambler и ящик моего провайдера вообще ничего...
Привожу код и заголовки
Заголовки
И есть ещё у меня пример заголовков от письма, которое лично у меня отображается нормально. Выкладываю текстом: http://www.zel-writers.net.ru/headers.txt. Пробовал делать в точности как там, но что-то совсем никак не клеится.
Подскажите как бороться с таким маразмом ?
Привет всему вашему сообществу. Столкнулся с такой проблемой, уже совсем из рук выбился - отправляю MIME письмо с HTML с вложенными изображениями. Изображениям присваиваю Content-ID и затем обращаюсь к ним в теле HTML для вывода изображений. Суть проблемы в том, что почтовые клиенты не всегда правильно отображают изображения. В основном это почтовые web-движки. Остальные программы типа Outlook Express, Outlook из Offic'a всё отображают просто супер. Специально зарегил себе ящики на mail, rambler, ya.ru - из них более-менее отображает mail.ru. Яндекс отображает только <img src='cid:x'>, но не отображает backround='cid:y'. Rambler и ящик моего провайдера вообще ничего...
Привожу код и заголовки
PHP:
function SendEmail (...) {
global $email_errors;
set_time_limit(120);
# соединяемся с сервером
if (!$smtp_socket = @fsockopen($smtp_server, $smtp_port, $errno, $errstr, 30)) {
$email_errors = "yes";
} else {
# Определяем заголовки
$subject = "=?Windows-1251?B?".base64_encode($subject)."?="; // кодим subject под win-1251
$headers = "Subject: $subject\r\nFrom: $from\r\nTo: $to\r\n";
# формируем аттачи
if (!empty($attach)) {
# присоединям HTML сообщние
$boundary = md5(uniqid(time()));
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$multipart .= "--$boundary\n";
$multipart .= "Content-Type: text/html; charset=windows-1251\n";
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
$multipart .= "$message\n";
$message_part = "";
# присоединям сами изображения и cid
foreach ($attach as $i => $path) {
# открываем файл
if (!$fp = fopen($path, "r")) {
exit;
}
$file = fread($fp, filesize($path));
fclose($fp);
$message_part .= "--$boundary\n";
$message_part .= "Content-Type: image/gif; name=\"Image".$i."\"\n";
$message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-ID: <Image".$i.">\n";
$message_part .= "Content-Disposition: attachment; filename=\"Image".$i.".gif\"\n\n";
$message_part .= chunk_split(base64_encode($file))."\n";
}
$multipart .= $message_part."--$boundary--\n";
} else {
$headers .= "Content-Type: text/html; charset=windows-1251\r\n
Content-Transfer-Encoding: 8bit";
$multipart = "\r\n\r\n".$message;
}
# посылаем команды серверу (HELO, FROM, TO, DATA и тд)
fclose($smtp_socket); // закрываем соединение
}
}
Код:
Return-Path: <[email protected]>
X-UCL: actv
Received: from [10.2.12.210] (account bangerson HELO )
by comtv.ru (CommuniGate Pro SMTP 4.1.8)
with SMTP id 16861182 for [email][email protected][/email]; Mon, 08 Jan 2007 19:40:22 +0300
Subject: =?Windows-1251?B?wu7x8fLg7e7i6+Xt6OUg7+Dw7uv/IO3gIFdpbk1vZGRpbmcucnU=?=
From: [email][email protected][/email]
To: [email][email protected][/email]
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="f449a3e18d44a161aaecca8f90052b52"
Date: Mon, 08 Jan 2007 19:40:22 +0300
Message-ID: <[email protected]>
--f449a3e18d44a161aaecca8f90052b52
Content-Type: text/html; charset=windows-1251
Content-Transfer-Encoding: Quot-Printed
<html>
<head>
</head>
<body>
<img src='cid:Image1' align='bottom' hspace='2'>
<img src='cid:Image2' align='bottom' hspace='2'>
<img src='cid:Image3' align='bottom' hspace='2'>
</body>
</html>
--f449a3e18d44a161aaecca8f90052b52
Content-Type: image/gif; name="Image0"
Content-Transfer-Encoding: base64
Content-ID: <Image0>
Content-Disposition: attachment; filename="Image0.gif"
base64_encode image
--f449a3e18d44a161aaecca8f90052b52
Content-Type: image/gif; name="Image1"
Content-Transfer-Encoding: base64
Content-ID: <Image1>
Content-Disposition: attachment; filename="Image1.gif"
base64_encode image
--f449a3e18d44a161aaecca8f90052b52
Content-Type: image/gif; name="Image2"
Content-Transfer-Encoding: base64
Content-ID: <Image2>
Content-Disposition: attachment; filename="Image2.gif"
base64_encode image
--f449a3e18d44a161aaecca8f90052b52--
Подскажите как бороться с таким маразмом ?