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

Форум PHP

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

 

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

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

тема: отправка картинки в теле письма
 
 автор: inga   (16.06.2010 в 19:23)   письмо автору
 
 

вот код

<?php
$to
="inga@ukr.net";
$from_mail="hi@ukr.net";
$from_name="inga";
$subject="tema";
$message="<h1>hi</h1>";
$file_name="5.jpg";
function 
sendMail($to,$from_mail,$from_name,$subject,$message,$file_name) {
      
$bound="spravkaweb-1234";
      
$header="From: '$from_name' <$from_mail>n";
      
$header.="To: $ton";
      
$header.="Subject: $subjectn";
      
$header.="Mime-Version: 1.0n";
      
$header.="Content-Type: multipart/mixed; boundary='$bound'";
      
$body="nn--$boundn";
      
$body.="Content-type: text/html; charset='windows-1251'\n";
      
$body.="Content-Transfer-Encoding: quoted-printablenn";
      
$body.="$message";
      
$file=fopen($file_name,"rb");
      
$body.="nn--$boundn";
      
$body.="Content-Type: application/octet-stream;";
      
$body.="name=".basename($file_name)."\n";
      
$body.="Content-Transfer-Encoding:base64n";
      
$body.="Content-Disposition:attachmentnn";
      
$body.=base64_encode(fread($file,filesize($file_name)))."n";
      
$body.="$bound--nn";
      if(
mail($to$subject$body$header)) {
        echo 
"<center>Письмо было успешно отправлено!</center>";
    } else {
    
        echo 
"<center>Сообщение не отправлено!</center>";
    };
    };
    
sendMail($to,$from_mail,$from_name,$subject,$message,$file_name);    
?> 


$file_name="5.jpg"; - картинка лежит там же где и этот файл

письмо приходит вот какое:
nn--Content-type: text/html; charset='windows-1251'
Content-Transfer-Encoding: quoted-printablenn<h1>hi</h1>nn--Content-Type:
application/octet-stream;name=5.jpg
Content-Transfer-Encoding:base64nContent-Disposition:attachmentnn/9j/4AAQSkZJRgA
BAQAAAQABAAD/2wCEAAkGBhQRERQUEhQTFRQUGRoXGBcYGRs eHBkdISIhFyQdFxggHCoeGh0mIBoeIDU
mJSopLC0tIB4xNTIqNSotLSkBCQoKDgwOFg 8PGiwkHyIyNDE1NC0uLCosLDAyLC8sKy4yN TUpLCwqNSo
sLTAvNC0sNTUsKi4pKjUvLi8pLC0qLP/AABEIAFUAcgMBIgACEQEDEQH/xAAbAAACAwEBAQAAAAAAAAA
AAAAABgMFBwQBAv/EAD4QAAIBAgQEBAMGAggHAAAAAAECEQADBB IhMQUGE0EiMlFhB4GRFCNScaHRwdI
VJEKSorHh8CVDU2KCk7L/xAAZAQEAAwEBAAAAAAAAAAAAAAAAAQIEBQP/xAApEQACAgECAwcFAAAAAAA
AAAAAAQIRIQMxBBORBRJBUVJhgSIycdHh/9oADAMBAAIRAxEAPwDcaKgzmqTifOuEwzm3 evqjrEghzuM
w2UjY0AxUUp2/iPgWIAxSkkwBlufyUP8AEfAKSDiVkaeW5/JQDZRSVifipgEj79mmfJbuGIjfwj1qIfF
7h/8A1bv/AKbn7UA9UUjW/i9gGYKLl6WIA+6fvp6UzYrjFu2ud3AUECYJ1JgaAE70BZ0Uq 3fiLgVMNiA
Dv5Lv18m1S4fnrBuQq3wSdhluSf8ADQDLRV IeaLAzzdjpnK8q4ymJ18PoahwvOWGulgl0k oAWGS4IB2J
lBVFOLV2qJpjDRS3hudsLccW0vFnIkDJc1H qJSCPep8BzTYvXTat3czgExlcbRPiKhdJGk zrVrV0QXtF
c+c0VIInSTMn5GKwHmfq3cXeFyLlw3CJIgQAF WDsYUAE+1bpxfE9O0zETEd43IG/zrPeNWvuMQ5LeFbk
CTlG58u1YOL4tcO42rvBo0tHmJ52EzActXs 6kpaC92BUkD1WDv6VDj+FXM7tlslcx1BUzrHrv/GurA4a
71EPiW2LMGSQJya6HTfvXZisKUvNePShb2e YYPGbYSnz32rarZnZXcO4Zbe2WuqGyk5VQk FjAMRGp/l+
R+b3CrAts+S94yyqoMlCumuwM++1WvFbv2Wy1oIwtXHRiwIDKwWCO+aYLTPtVG3ECwGTqKAABDGZEkk5
QB3GnaBRp5tYITGXCcmYJcRYLYg3rZRmuLa Jm2+6zlJaDqI80gaQamxt+4MJiA1++6OrFeoWJADGJMxO
UAmNjNVeENu4vScMDCMWBjMYLRM+x7bmrbizj7LdCkeRhlBmPNpAEDcDTTbaqSb tJF1sxew3DmxOtnxZ
EtoQdCSFymJOoG+saVaYLjBt3PszNGXItvKk65R5iWGkwe/faoeRrwRXztk8Y1MDtG509orhvz/SKnXz
29Y9lqJwjNVJCMnHYbLXUF5zOazcYEiNc/hMmTEQ0b/WqPgeOQ3smHJKtbPVziGY6ABZb1juBvV3Zu 5c
uok3DvA0yoNBOsSB+VJvKjZcQ0kqCp1/8l1/j8q8YaEGnjfHtjb5LubtFvxfHrgr6XFkXHY u0gnwEmVW
GIBAMaQKaOVsv9I2yAwLWbm+xUdMbBiAQZ99aRee26ly2yywyGCNQQSY1Ai nHlVieK2dSR9muQI28Sz8
zpNe8NKKkpeNUUcnVGo0V4DRXqVKzmTAtew 122kBmAifYg/wpF4swbDYpARnKvpOvcbb9j9DWl3WgTp8
6xvmXDXv6wwuEoBcMdIQvm0zk/wC59hXJ7R0o6jhcqp2beGk0pUrKPDcRYXgD cXKtrKxzJEhZ+uY1YuL
nUJP2joi8RqX6eTN37x23rmfFWbjG21v/AJYJ1PmXM8jX3/SpMWou3hbc2my3TZHgh4zRsCF29v3rqqj
Dk6OB8JQ3b5JNxSVyFj5pjxAjQjM2WR7V04 mwvhw6LYCPduHq5D1VZfvI1OpghZ7jtVdc4 XcwqZ1usrJ
ZEjzLMO0Bp2GXt6/KlPD84ughbNqAIE+IjtuZJEaRt7VM4qTz4ER2Hni1i3ZdHzZZnT 8SrPi1APh8sA0
s8x8xPmTouemVJEhZ8zCT7wIqflziRxoa06 wBlVQubvmEbEgCBoIA1qp5lwLW7ipGirAIO aQSX3j0afy
g96jGM5LZOM8bukyWB/NQR31g6d6deH4i01vqG5iLYDKrFyP7QOw8W 2npAP0z7pn0Ont/pTxwu+ti4VL
OVyMHusrZVYgHVgdYAA9CGpJ/S6C3RFzZxO4oD22ZVZoIOYhiQGzAHQDXTKB uaWDxy9B8W4g6CmfnS0W
RVCsxXpsYUkAFBrMRuKS+g34W+h/apUVFKK8Bd5YzYHizDCyCRcVwAB3U6aCIgm R+etOfInEC/FbaEkh
cMxggypISQZ17DekzlTCNKEq5RmAnsIb9Dr/kaafh0v8AxdG8f3mGZjmYsZ0HmOpEKKVbXs NjaBRQKKA
rOZh/VbvbQf8A0KSeP6YXFn0Fz/OtExlkOjKVzAjb1rMOYOKW8mKsl7ct1FI1z KdTsRlPbv3rjdpaM9W
Wm4K6dm3hpxjGVsWOX7K5WuXipulWiCNo/CDGoruxmLZw1kW4YuULShGbPrDEZv8ADPf3 q0wHw3xFxhf
U2Qty0MoLGYZRGaEI2O1Qca5OxeHXqFLDMz k5ku3ZDGWzZXhY7f7muu2o5dIxVeEVNzEj7 MbYjMlgBxs
UIS6SCD+Y+orMrd+PQ+xrRjy7iTZzfZ7fUnKbheWOmaSC2X0G1WgW9 kAOHctEMeugn3EL3M/pVZcRo39
8eqJjpz9L6CXyc7ubwQnM+RRAJ3DidCCI9f0O1abi+TbuQowtLcBPiVbhAgljkzKT4gMs+piqDFYd7nn
wWb0m8ug0MeSYkT9PSpsNh72HIu27RtB0gI LgYNlY6v4RrplmDAM0XEaNYnHqv2Ty5+lljjOTDh8Gwi2
ojICTc1LNGpKgdzr2pdThqrfzocLkH9h8TJ 8uWc4jsdo7VfXOScfxCyj57NtWBBRnckwd2 hImV/WpODf
B25aYm+uGviNB1bqR76Wtau2u53t/w/6l8lKd0LmLv2cMjZj1WuWrcKSSPQ5WgjL7H 0qzxt2L1xBZNx2
kp6aACDrA1j61dYr4U3bl60xNjp20ClCznY QAPAJA039KsRyDidPvrGm33e3zirSeMERXm I3LGKQIfED
DjVQqCW0y5NGZtJJA/D6V3/DsEcVsAiCMIwI+c1c8V+FuJuWwtu7h1IYN5SokCAdFOok6iD9Km5G+G2J
weNGIv3bVwZHTws5aTEeZRpp61CStsteyNH or6iigPTVcOAYdgGaxYZjBJa2hJPuSsk1bd KgWqAit2wA
AAABoANgPYUPaB3AP5ipunR06hq9wc/2Zfwr9BXn2RPwJ/dH7V09Ojp1Xlw8kTbOb7In4E/uj9qDhU/C
un/aP2rp6dHTpy4eSFsiRABAAA9BXtSdOjp1fY gjor76VHSoCOipDZo6XvQEVFS9H3rygJaKK KAKKKKA
KKKKAKKKKAKKKKAKKKKAKKKKAKKKKA//Znspravkaweb-1234--nn


почему нет картинки? что это за символы?

  Ответить  
 
 автор: Valick   (16.06.2010 в 19:25)   письмо автору
 
   для: inga   (16.06.2010 в 19:23)
 

что это за символы?
не повериете, но это и есть картинка :)

  Ответить  
 
 автор: Gubichev   (16.06.2010 в 19:26)   письмо автору
 
   для: inga   (16.06.2010 в 19:23)
 

      $body.="Content-Transfer-Encoding:base64n";
      $body.="Content-Disposition:attachmentnn";
      $body.=base64_encode(fread($file,filesize($file_name)))."n";
      $body.="$bound--nn";


Что это?

  Ответить  
 
 автор: inga   (16.06.2010 в 20:07)   письмо автору
 
   для: Gubichev   (16.06.2010 в 19:26)
 

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

  Ответить  
 
 автор: Gubichev   (16.06.2010 в 20:27)   письмо автору
 
   для: inga   (16.06.2010 в 20:07)
 

Нет. Я имею ввиду, что такое n в конце каждой строки?

  Ответить  
 
 автор: inga   (16.06.2010 в 20:33)   письмо автору
 
   для: Gubichev   (16.06.2010 в 20:27)
 

ой, я не знаю, этот код в википедии взяла. этот момент я не поняла, думала так надо, может перенос строки или еще что

  Ответить  
 
 автор: Gubichev   (16.06.2010 в 20:37)   письмо автору
 
   для: inga   (16.06.2010 в 20:33)
 

Ну вот исправьте на \n и может быть у вас всё заработает..

  Ответить  
 
 автор: inga   (16.06.2010 в 20:56)   письмо автору
 
   для: Gubichev   (16.06.2010 в 20:37)
 

ну да, это исправила. но теперь письмо приходит пустое. теперь и кода картинки нет. как же картинку передать?

  Ответить  
 
 автор: sim5   (16.06.2010 в 21:13)   письмо автору
57.3 Кб
 
   для: inga   (16.06.2010 в 20:56)
 

Читайте. Нужно правильно оформлять почтовое отправление.

  Ответить  
 
 автор: inga   (16.06.2010 в 22:05)   письмо автору
 
   для: sim5   (16.06.2010 в 21:13)
 

sim5, я взяла пример из вашего файла

<?php
/*Зададим в переменной $file_name путь до вставляемой картинки.
В нашем случае она находится в том же каталоге, что и файл отправки письма. 
Но вместо этого сюда можно подставитьфайл, 
полученный сценарием из <INPUT type=file name=file_name>.*/
$file_name "5.jpg";
$subj "Отправка изображения";
$bound "spravkaweb-1234";
$headers "From: \"Evgen\" <admin@spravkaweb.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: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("inga_php@ukr.net"$subj$body$headers);
?>


письмо не приходит. почему?

  Ответить  
 
 автор: sim5   (16.06.2010 в 22:16)   письмо автору
 
   для: inga   (16.06.2010 в 22:05)
 

Этот пример, содержит неточности. Уж не помню, но там еще и другие такие есть вроде бы. Они не для подражания, а изучения ошибок. Ниже даны несколько почтовых отправлений (тело письма) с различным содержанием. Вот эти отправления созданы правильно, согласно рекомендациям RFC. Можете скопировать эти содержания, сохранить в файле с расширением .eml просмотреть их в Outlook, отправить адресату - гарантия того, что вы их получите.
Если у вас Денвер, то ищите отправления в папке tmp\!sendmail локального сервера, и изучите их в Outlook. Ошибки будут видны.
Данная статья как пример ошибок и рекомендаций. В этом разделе форума есть готовые примеры скриптов рабочих (можете найти их), есть и в приложениях форума такой скрипт. Возьмите его - изучив, найдете неточности в примере выше, вот это и будет хоть каким-то изучением данного вопроса.

  Ответить  
 
 автор: Trianon   (16.06.2010 в 22:58)   письмо автору
 
   для: inga   (16.06.2010 в 22:05)
 

так письмо не приходит или картинки нет?

  Ответить  
 
 автор: inga   (16.06.2010 в 23:56)   письмо автору
 
   для: Trianon   (16.06.2010 в 22:58)
 

не приходит письмо((

  Ответить  
 
 автор: inga   (17.06.2010 в 09:35)   письмо автору
 
   для: inga   (16.06.2010 в 23:56)
 

подскажите пожалуйста. письмо приходит, но картинка в виде символов. так понимаю не правильно указан Content-Transfer-Encoding. как должно быть?
<?
$file_name 
"5.jpg";
$subj "Отправка изображения";
$bound strtoupper(uniqid(time()));

$headers "From: \"Evgen\" <admin@spravkaweb.ru>\n";
$headers .= "To: admin@localhost.ru\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:spravkaweb_img_1\">"
;
$body .= "\n\n--".$bound."\n";

$body .= "Content-ID: <spravkaweb_img_1>\n\n";
$body .= "Content-Type: image/jpeg; name=\"".basename($file_name)."\"\n";//думаю проблема тут
$body .= "Content-Transfer-Encoding:base64\n";//или тут
$f fopen($file_name,"rb");
$body .= base64_encode(fread($f,filesize($file_name)))."\n";
$body .= "--".$bound."--\n\n";
mail("inga_php@ukr.net"$subj$body$headers);?>

  Ответить  
 
 автор: sim5   (17.06.2010 в 10:17)   письмо автору
 
   для: inga   (17.06.2010 в 09:35)
 

http://softtime.ru/forum/read.php?id_forum=1&id_theme=60002&page=1
Вы не хотите читать, а пробуете подставлять. А в сети много информации о почте.

  Ответить  
 
 автор: inga   (17.06.2010 в 10:19)   письмо автору
 
   для: sim5   (17.06.2010 в 10:17)
 

да читала я это. тупенька чуточку значит

  Ответить  
 
 автор: inga   (17.06.2010 в 10:49)   письмо автору
 
   для: inga   (17.06.2010 в 10:19)
 

ставлю
в таком порядке
Content-Type: multipart/related;
Content-type: text/html;
Content-Type: image/jpeg;
нет картинки вообще

а в таком
Content-Type: multipart/mixed ;
Content-type: text/html;
Content-Type: image/jpeg;
картинка приходит но в символах

  Ответить  
 
 автор: sim5   (17.06.2010 в 12:01)   письмо автору
 
   для: inga   (17.06.2010 в 10:49)
 

У вас сбой частей тела письма. Не хотите вы изучать. У вас что в качестве локального сервера?

  Ответить  
 
 автор: inga   (17.06.2010 в 12:12)   письмо автору
 
   для: sim5   (17.06.2010 в 12:01)
 

у меня нет локального сервера, я делаю по живому на сайте. сайт на unix

  Ответить  
 
 автор: sim5   (17.06.2010 в 12:33)   письмо автору
 
   для: inga   (17.06.2010 в 12:12)
 

Негоже терроризировать почтовые серверы. Заходим сюда, скачиваем и устанавливаем Денвер. Установка его пустяшная, создание виртуального домена тоже простое - нужно создать паки и перезапустить Денвер. Помещайте в созданный домен свой скрипт отправки письма и запускайте его. В папке установленного сервера tmp\!sendmail увидите свое почтовое отправление (оно не отправляется реально). Вот теперь открывайте его в Outlook, выбирайте Свойства --> Подробно (здесь можно просмотреть заголовки) --> Исходное сообщение.
А теперь посмотрите внимательно и изучите тело вашего сообщения. Можете сравнить его с образцами, которые в прикреплении есть. Чай не видно будет причину ошибки?

  Ответить  
 
 автор: Trianon   (17.06.2010 в 12:50)   письмо автору
 
   для: inga   (17.06.2010 в 12:12)
 

>у меня нет локального сервера, я делаю по живому на сайте. сайт на unix
Это ну ни разу не повод для доблести.
Денвер весит метров 10 отсилы.
И кстати, субъективно, первое время после установки, воспринимается разработчиком, как панацея.

  Ответить  
Rambler's Top100
вверх

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