отправка *.html с вложенными картинками

samurai

Новичок
отправка *.html с вложенными картинками

использую код с этого ресурса
PHP:
 <?php 
include('Mail.php'); 
include('Mail/mime.php'); 

$text = 'Text version of email'; 
$html = '<html><body>HTML version of email<img src="image.jpg"></body></html>'; 
$file = '/tmp/image.jpg'; 
$crlf = "\r\n"; 
$hdrs = array( 
              'From'    => '[email protected]', 
              'Subject' => 'Test mime message' 
              ); 

$mime = new Mail_mime($crlf); 

$mime->setTXTBody($text); 
$mime->addHTMLImage ($file, 'image/jpeg'); 
$mime->setHTMLBody($html); 

$body = $mime->get(); 
$hdrs = $mime->headers($hdrs); 


$mail =& Mail::factory('mail'); 
$mail->send('postmaster@localhost', $hdrs, $body); 
?>
картинка не приходит, вместо неё неприятный крест.
Картинку сохранил на серванте вот здесь http://www.site.ru/tmp/image.jpg
адрес для примера не реальный,
помогите, я новичок в этом деле, FAQ прочитал
 

Гравицапа

elbirret elcno
samurai
Ты уверен, что картинка именно там лежит? Мне почему-то кажется, что ты кое-что напутал с путями....
На будущее, я конечно иногда телепат и могу догадаться что речь идёт о PEAR::Mail_Mime модуле, но ты бы свои вопросы более подробно составлял бы.
 

samurai

Новичок
Гравицапа
да через браузер я её запускаю и её видно

и папка tmp создана в корневой папке сервера, я перепробовал разные варианты, много вариантов прежде чем обратился за помощью

подробнее, я не знаю как подробнее :confused: просто здесь: http://www.phpclub.ru/detail/article/mail?printVersion=1#part_3 написан код, он не срабатывает.
 

samurai

Новичок
добавил var_dump($body); после $body = $mime->get();

при запуске скрипта в браузере получил следующее:

string(387) "--=_91ee9f8599c842cdcacc137a6d210ca3 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit Text version of email --=_91ee9f8599c842cdcacc137a6d210ca3 Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable HTML version of email --=_91ee9f8599c842cdcacc137a6d210ca3-- "

мдее..
 

Гравицапа

elbirret elcno
samurai

А теперь сделай
PHP:
$file = '/tmp/image.jpg';
...
header("Content-type: image/jpeg");
readfile($file);
Картинка есть?
или
PHP:
$file = '/tmp/image.jpg';
var_dump(is_readable($file));
В общем, если файла действительно там нет, то можешь покопаться/подебажить этот пировский модуль, на предмет, что происходит в методе
PHP:
$mime->addHTMLImage ($file, 'image/jpeg');
 

samurai

Новичок
вот что на это сказал браузер:


<br />
<b>Warning</b>: readfile(): open_basedir restriction in effect. File(/tmp/image.jpg) is not within the allowed path(s): (/www/vhosts/site.ru/:/tmp:/usr/local/lib/php) in <b>/www/vhosts/site.ru/html/tmp/sp.php</b> on line <b>23</b><br />
<br />
<b>Warning</b>: readfile(/tmp/image.jpg): failed to open stream: Operation not permitted in <b>/www/vhosts/site.ru/html/tmp/sp.php</b> on line <b>23</b><br />


что это значит?

на это: var_dump(is_readable($file));
ответ: bool(false)

эхх, что же делать
 

samurai

Новичок
Гравицапа

я это читал,

когда я захожу на ftp в корень
и иду сюда html/tmp/image.jpg

через браузер так www.site.ru/tmp/image.jpg

-~{}~ 12.07.07 15:24:

в общем написал путь так

/www/vhosts/site.ru/html/tmp/image.jpg

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

Спасибо вам за терпение, сам бы так и тыкался.
 

samurai

Новичок
когда принимаю через the bat все читаемо и есть картинки, но их получается только 4, вкладываю больше письмо просто не приходит.

принимаю через web например yandex или mail, первыми строчками в письме:
3e76b717a81f58e7b0c3bf16d436b0cd Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit

и дальше отдельно картинки в таком виде:
=E0=E2=F2=EE=EC=E0=F2=E8=E7=E8=F0=EE=E2=E0=ED=ED=FB= =E5 =EA=E0=ED=E0=EB=E8=E7=E0=F6=E8=EE=ED=ED=FB=E5 =ED=E0=F1=EE=F1=ED=FB=E5

затем html часть тоже не читаема,

подскажите пожалуйста куда написать тип контента и кодировки

-~{}~ 17.07.07 07:12:

в общем решил начать начать с самого начала

http://book.itep.ru/4/4/mime.htm
 

samurai

Новичок
про MIME всё прочитал, написал такой код:

PHP:
<?php
$file_name="/address/1.gif";
$subj="Отправка изображения";
$bound="b-1234";
$headers="From: [email][email protected][/email]\n";
$headers.="Subject: $subj\n";
$headers.="Mime-Version: 1.0\n";
$headers.="Content-Type: multipart/mixed; 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:b_img_1\">";
$body.="\n\n--$bound\n";
$body.="Content-Type: image/gif\n";
$body.="Content-Transfer-Encoding: base64\n";
$body.="Content-ID: b_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);
?>
в общем на яндекс приходит отлично и довольно быстро , на маил не приходит вообще в течении дня ждал - смотрел через веб интерфейс.
на мыло от моего хостинга приходит текст и повреждённая картинка, причём картинка то целиком пустая, то видно сверху тонкую полоску. Что делать даже не знаю :rolleyes:

самый первый топик в теме, с кодом который отправляется на мыло от хостинга, а на яндекс приходят каракули и в три части, на mail.ru тоже не приходит, в чём же секрет?
 
Сверху