Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как по-простому прошить изображение в теле письма?
 
 автор: Владимир22   (19.05.2006 в 16:53)   письмо автору
 
 

Кто знает, как по-простому можно прошить изображение в теле письма (желательно без всяких классов), и чем проще, тем лучше. Вот нашёл на одном сайте код, но насколько он работоспособный и нет ли вариантов получше? Всем знающим спасибо за помощь или ссылки на данную информацию.


<?php
/*
В переменной $file_name путь до вставляемой картинки.
*/
$file_name="5.jpg";
$subj="Отправка изображения";
$bound="pupkin_web";
$headers="From: \"Вася Пупкин\" <admin@pupkin.ru>\n";
$headers.="To: admin@localhost.ru\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:pupkin_web_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: <pupkin_web_img_1>\n\n";
$f=fopen($file_name,"rb");
$body.=base64_encode(fread($f,filesize($file_name)))."\n";
$body.="--$bound--\n\n";
mail("admin@localhost.ru"$subj$body$headers);
?>

   
 
 автор: Владимир22   (19.05.2006 в 19:43)   письмо автору
 
   для: Владимир22   (19.05.2006 в 16:53)
 

Плюс ещё вопрос к знающим.
При отправке простого письма (код ниже) текст приходит в нормальной кодировке, а вот тема ("Проверка") в непонятной кодировке.
Как это исправить?

<?
$header
="Content-type: text/html; charset=\"windows-1251\"";
mail("admin@pupkin.ru""Проверка""Текст письма - тра-та-та",
"From: somebody@pupkin.ru\n$header");
?>

   
 
 автор: cheops   (19.05.2006 в 23:42)   письмо автору
 
   для: Владимир22   (19.05.2006 в 19:43)
 

Как выглядит непоняная кодировка? И какой клиент используете для просмотра писем?

   
 
 автор: Владимир22   (20.05.2006 в 02:21)   письмо автору
 
   для: cheops   (19.05.2006 в 23:42)
 

Заголовок выглядит так: нPOПЮБЙЮ ХГНАПЮФЕЬХЬ
Как чтоб было по-русски?

   
 
 автор: Jura   (22.05.2006 в 14:54)   письмо автору
 
   для: Владимир22   (20.05.2006 в 02:21)
 

это у тебя koi8 а надо win-1251, попробуй iconv
iconv('KOI8-R,'windows-1251',$message);

   
 
 автор: Владимир22   (23.05.2006 в 23:24)   письмо автору
 
   для: Jura   (22.05.2006 в 14:54)
 

Что-то у меня php не понимает такой команды:
iconv('KOI8-R','windows-1251',$message);
и так тожже не хочет:
$message = "Проверка";
$message=iconv('KOI8-R,'windows-1251',$message);


Пишет: Call to undefined function: iconv()

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

   
 
 автор: cheops   (24.05.2006 в 12:22)   письмо автору
 
   для: Владимир22   (23.05.2006 в 23:24)
 

Вероятно у вас не полдключёно расширение iconv(). Вы можете для преобразования KOI8-R в Windows-1251 использовать функцию convert_cyr_string()
<?php
  $message 
convert_cyr_string ($message'k''w');
?>

   
 
 автор: Jura   (22.05.2006 в 14:55)   письмо автору
 
   для: Владимир22   (20.05.2006 в 02:21)
 

Кстати, а скрипт замечательный получился и главное быстрый. Премного благодарен автору. Я его правда немного модернизировал, но азы мне понравились. И на всех версиях php работает.

   
 
 автор: Jura   (22.05.2006 в 15:21)   письмо автору
 
   для: Владимир22   (19.05.2006 в 16:53)
 

Подскажите подалуйста, что делать? если файл прикрепляется к письму, но неправильно отображается, т.е. отображается наполовину. Мне кажется, что он прикрепляется не полностью.

   
 
 автор: Jura   (22.05.2006 в 15:37)   письмо автору
 
   для: Jura   (22.05.2006 в 15:21)
 

Уже разобрался!
Обязательно при прикреплении файла! после кодирования в base 64 используйте функцию
chunk_split

$body.=chunk_split(base64_encode(fread($f,filesize($file_name))))."\r\n"; 


Урррра..... Заработало.

   
 
 автор: Владимир22   (23.05.2006 в 23:18)   письмо автору
 
   для: Jura   (22.05.2006 в 15:37)
 

А весь работающий код можете привести? У меня при отправке в письме с реального сервера картинки, лежащей на том же сервере, приходит такой ответ:
Warning: While decoding this file Opera encountered errors.
И ещё: может кто знает,как можно проверять письма с аттачментом на локальном компьютере в Денвере? А то всё приходит в виде шифра - картинок не видно и присоединения проверить нельзя.

   
 
 автор: Jura   (25.05.2006 в 01:27)   письмо автору
5.1 Кб
 
   для: Владимир22   (23.05.2006 в 23:18)
 

Прикрепляю к данному сообщению рабочий скрипт. Если кто захочет модифицировать, то милости просим, только не забывайте пожалуйста выкладывать ваши наработки в форум.

Хотелось бы следующее еще в него внедрить:
1. Количество прикрепленных файлов чтобы не ограничивалось, а задавалось через массив.
2. Красивое преобразование во все самые наиболее популярные кодировки. Постарался написать универсально, но в utf -8 и iso не транслирует.
В одном из классов видел отличную функцию для перекодирования. Если найду - выложу.
3. чтобы когда функции рассылки передавался html код со ссылками на файлы, эти файлы прикреплялись автоматически и ссылки заменялись на внутренние.

Данный скрипт проверялся на работоспособность на php4 и php5 windows и linux серверах. Работает быстро и бесшумно.

Будут предложения, пишите. Замечания и критика только приветствуется.

   
 
 автор: Владимир22   (25.05.2006 в 02:57)   письмо автору
 
   для: Jura   (25.05.2006 в 01:27)
 

Спасибо ПРЕогромное!
Буду проверять на работоспособность в Опере.
Всем Good luck!

   
 
 автор: Jura   (25.05.2006 в 11:01)   письмо автору
 
   для: Владимир22   (25.05.2006 в 02:57)
 

в опере желательно последней! Так как 8.5 и 9 релизы существенно отличаются.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования