Справочник
WEB - языков

www.spravkaweb.ru Rambler's Top100
 Вы находитесь: Главная/Советы/Отправка писем при помощи PHP.Как вставить в письмо картинкуРаспечатать 
Разделы
Новости
Сразу все
HTML
JavaScript
VBScript
CSS
Flash
Perl
PHP
MySQL
SSI
VRML
Дополнительно
Советы
Форум
Гостевая
Ссылки
Написать мне
Поиск:
Рассылки
Subscribe.Ru:

Советы

<--Назад | Вернуться к списку
Отправка писем при помощи PHP
Как вставить в письмо картинку
Допустим, у нас задача - вставить в письмо, отправляемое с сайта пользователю, свой баннер (кнопку).
Сделать это можно двумя способами:

Первый - в HTML-коде письма указываем адрес картинки как на простой страничке <IMG src="https://spravkaweb.ru/img/88x31.gif">
В этом случае, если пользователь читает ваше письмо online, картинка благополучно загрузится с указанного сервера и отобразится в письме. Но если пользователь не в online, картинка загрузиться не сможет.

Второй способ - это поместить картинку в само письмо как прикрепленный файл (более подробно о прикреплении файлов к письму читайте здесь), присвоить этому файлу уникальный идентификатор, а затем в теле письма при указании адреса картинки сослаться на этот идентификатор.

Таким образом, в письмо можно вставлять не только изображения, но и flash-ролики, музыку, элементы ActiveX.

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

Чтобы присвоить идентификатор картинке, надо в разделе письма, где она располагается, поместить следующий заголовок:
Content-ID: <идентификатор>
где идентификатор является строкой, которая будет уникальной для данного письма (по примеру параметра boundary заголовка Content-Type).
Теперь в самом письме можно в адресе картинки подставлять ее идентификатор.
<IMG src="cid:идентификатор">
Почтовая программа проанализирует его, извлечет из соответствующей секции картинку и покажет ее.
Вот как может выглядеть письмо:
Date: Sat, 13 Mar 2004 09:56:31 -0300
Subject: Отправка изображения
From: "Evgen" <[email protected]>
To: [email protected]
Subject: Отправка изображения
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="spravkaweb-1234"

--spravkaweb-1234
Content-type: text/html; charset="windows-1251"
Content-Transfer-Encoding: 8bit

<h3>Привет</h3>
Это проба отправки письма с прикрепленной картинкой.<BR>
А вот и сама картинка:<BR>
<img src="cid:spravkaweb_img_1">

--spravkaweb-1234
Content-Type: image/jpeg; name="5.jpg"
Content-Transfer-Encoding:base64
Content-ID: <spravkaweb_img_1>

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD ....
--spravkaweb-1234--
Как и в случае с прикрепляемыми файлами, если нам заранее неизвестно, какой тип картинки будет прикреплен, заголовку Content-Type можно присвоить значение application/octet-stream.

Для закрепления этой темы напишем программу, которая отправляет письмо с картинкой:
<?php
/*
Зададим в переменной $file_name путь до вставляемой картинки.
В нашем случае она находится в том же каталоге, что и 
файл отправки письма. Но вместо этого сюда можно подставить
файл, полученный сценарием из <INPUT type=file name=file_name>.
*/
$file_name="5.jpg";
$subj="Отправка изображения";
$bound="spravkaweb-1234";
$headers="From: \"Evgen\" <[email protected]>\n";
$headers.="To: [email protected]\n";
$headers.="Subject: $subj\n";
$headers.="Mime-Version: 1.0\n";
$headers.="Content-Type: multipart/alternative; boundary=\"$bound\"\n";
$body="--$bound\n";
$body.="Content-type: text/html; charset=\"windows-1251\"\n";
$body.="Content-Transfer-Encoding: 8bit\n\n";
$body.="<h3>Привет</h3>
Это проба отправки письма с прикрепленной картинкой.<BR>
А вот и сама картинка:<BR>
<img src=\"cid:spravkaweb_img_1\">";
$body.="\n\n--$bound\n";
$body.="Content-Type: image/jpeg; name=\"".basename($file_name)."\"\n";
$body.="Content-Transfer-Encoding:base64\n";
$body.="Content-ID: <spravkaweb_img_1>\n\n";
$f=fopen($file_name,"rb");
$body.=base64_encode(fread($f,filesize($file_name)))."\n";
$body.="--$bound--\n\n";
mail("[email protected]", $subj, $body, $headers);
?>
Хочу отметить, что аналогичным образом в письмо можно вставлять не только картинки, но, например, flash-ролики, звук, и другие элементы, которые должны подгружаться к странице из файлов.
Комментарии
Имя:
Майл:
Коментарий:
Наверх / К оглавлению
 
Что нового:
05.04.2004
Очередное продолжение темы отправки писем с сайта.
Хотите, чтобы в отправляемом письме были картинки? А может flash-ролик или звук?
Как это сделать читайте в статье Как вставить в письмо картинку.
Голосование:
Ваше отношение к дизайну сайта:
Приятный.
Оригинальный.
Так себе.
Видали и получше.
Ужасный.
Ничего хуже не встречали.
Счетчики:
Rambler's Top100
Сделать страницу стартовой Сделать страницу стартовой
Добавить страницу в избранное Добавить сайт в избранное
Сообщить об найденной ошибке Сообщить об ошибке