mail() и images (html)

Cruiser

Новичок
mail() и images (html)

Здрасьте всем.
Отправлять файло средствами функции mail() я научился.
Теперь другая задача.
К НГ надо подписчикам разослать поздравительное письмо. Письмо в хтмл формате с картинками (еще и яву-скрипт всунуть надо). Ява-скрипт легко, такой же хтмл а вот как картинки. Картинки именно в теле письма должны быть ессно.
Как это реализовать?
 

SiMM

Новичок
"Раздраконь" любое письмо с картинкой да посмотри.
Картинки вставляются в виде <img src="cid:id_картинки">, в заголовке картинки должен быть хидер
Content-ID: <id_картинки>
Естесственно, что если картинок несколько - id должны различаться.
 

AHTIXPICT

Новичок
Это в писме, которое ты отправляешь.
Ты атачишь туда HTML и картинки.
 

Cruiser

Новичок
Не понял.
Наведите меня на примеры плиз.
Или, например, есть картинка на сайте image.gif вот как ее вставить в письмо?
 

SiMM

Новичок
В HTML-части письма:
...
<img src="CID:bhovdcnf_uoxqvyot_wvqfqjet">
...
Заголовки картинки-вложения:
------=_NextPart_000_0000_BB56EA84.47E8B522
Content-Type: image/gif; name="rpvpxvbu.gif"
Content-Transfer-Encoding: base64
Content-ID: <bhovdcnf_uoxqvyot_wvqfqjet>

далее закодированное содержимое

Однако, подозреваю, что с такими успехами ты ещё долго будешь корячиться, посему гораздо проще воспользоваться готовым классом PHPMailer.
 

SiMM

Новичок
Какой может быть путь в письме? Неужели не видно, что в качестве пути нужно указывать идентификатор картинки с префиксом CID: ? Или ты думаешь картинка в письмо сама вставляется мылером только потому, что ты там путь укажешь?
 

Cruiser

Новичок
странно, а в классе phpmailer и на картинку применяется тип application/octet-stream

-~{}~ 13.12.04 16:18:

а чем тогда прикрепленная от внедренной картинки отличается?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
что в твоем понятии внедренная и прикрепленная картинка?
 

Cruiser

Новичок
прикрепленная (из ридми phpmailer) - string or binary attachment (non-filesystem) to the list.
внедренная не в листе а в теле.

Чего то я с этим классом phpmailer никак не разберусь.
В примере функция AddStringAttachment имеет всего 2 параметра а в доке целых 4.
Гдеж правда?!

-~{}~ 14.12.04 09:19:

Приведите, плиз, простой пример (полный) со всеми необходимыми заголовками.
 

SiMM

Новичок
Ну неужели сложно почитать readme, посмотреть примеры в phpmailer_test.php? Практически слизанный оттуда пример:
PHP:
require 'class.phpmailer.php'; 
$mail = new PHPMailer(); 
$mail->IsSMTP();            // set mailer to use SMTP 
$mail->Host = 'localhost';  // specify main and backup server 
$mail->From = '[email protected]'; 
$mail->FromName = 'Mailer'; 
$mail->AddAddress('admin@localhost', 'Josh Adams'); 
$mail->IsHTML(true);        // set email format to HTML 
if (!$mail->AddEmbeddedImage('rocks.png', 'my-attach', 'rocks.png', 'base64', 'image/png')) 
  die ($mail->ErrorInfo); 
$mail->Subject = 'Here is the subject'; 
$mail->Body    = <<<BODY 
This is the HTML message body <b>in bold!</b><br><img src="cid:rocks.png"> 
BODY; 
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo); 
echo 'Message has been sent';
 

Cruiser

Новичок
Спасибо!
зы: правда я хотел без класса обойтись.

-~{}~ 14.12.04 10:02:

хм, а где же хидер multipart ?

-~{}~ 14.12.04 10:26:

Практически слизанный оттуда пример
что то я и близко такого примера там не нашел, куча ненужных мне функций
 

SiMM

Новичок
Автор оригинала: Cruiser
что то я и близко такого примера там не нашел, куча ненужных мне функций
Нет ну я могу конечно тебя носом ткнуть, если ты до такой степени несамостоятелен.
PHP:
 // Взято из phpmailer-1.72/test/phpmailer_test.php
// ...
/**
 * An embedded attachment test.
 */
function test_Embedded_Image() {
// ...
}
// ...
 

Cruiser

Новичок
SiMM, да все практически также как с аттачами, только хидеры чуть другие.
Все работает. Разобрался.
Всем спасибо!

-~{}~ 14.12.04 15:39:

А как заставить ява-скрипт работать в почтовых клиентах?
Точне, такие проверки можно делать -
PHP:
var ie4up = (document.all) ? 1 : 0;
 
Сверху