Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отправка писем с сайта с вложениями

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Отправка писем с сайта с вложениями
Loki_
Отправлено: 15 Января, 2009 - 10:46:48
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




Вот функция отправки сообщения с вложением

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function XMail( $from, $to, $text, $filename)
  4.  {
  5.    $path=$filename;
  6.  
  7. $fp = fopen($path,"rb");
  8.  
  9. if (!$fp)
  10.     {
  11.       print "Файл ".$path." не может быть прочитан";
  12.       exit();
  13.     }
  14. $file = fread($fp, filesize($path));
  15. fclose($fp);
  16. $path=trim(substr($path,strrpos($path,'/')+1));
  17. $boundary = "--".md5(uniqid(time()));
  18. $headers = "MIME-Version: 1.0\n";
  19. $headers .="From: ".$from." <zakaz@sprecord.ru> \n";
  20. $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
  21. $multipart = "--".$boundary."\n";
  22. $kod = 'koi8-r';
  23. $multipart .= "Content-Type: text/plain; charset=".$kod."\n";
  24. $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
  25. $multipart .= $text."\n";
  26. $message_part = "--".$boundary."\n";
  27. $message_part .= "Content-Type: application/octet-stream; name==\"".$path."\"\n";
  28. $message_part .= "Content-Transfer-Encoding: base64\n";
  29. $message_part .= "Content-Disposition: attachment; filename==\"".$path."\"\n\n";
  30. $message_part .= chunk_split(base64_encode($file))."\n";
  31. $multipart .= $message_part."--".$boundary."--\n";
  32. $headers = @convert_cyr_string ($headers,'w','k');
  33. $multipart = @convert_cyr_string ($multipart,'w','k');
  34.     return @mail($to, @convert_cyr_string ("Новости SpRecord.",'w','k'), $multipart, $headers);
  35.  
  36.  }
  37.  
  38.  


Проблема в том, что в аутлуке при открытии письма переданного с картинкой она не отображается в нижней части письма, при этом файл нормально скачивается и открывается. Однако
 
 Top
Владимир
Отправлено: 15 Января, 2009 - 11:18:11
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




в смысле не отображается?
не отображается что прикреплен файл?
или не отображается содержимое прикрепленного файла в тексте письма в Аутлуке?
 
 Top
Loki_
Отправлено: 16 Января, 2009 - 10:48:44
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




не отображается содержимое прикрепленного файла в тексте письма в Аутлуке

з.ы. если для кого то так понятней то не отображается preview картинки Огорчение
(Добавление)
проблему решил сам=)) оказывается ему нужно текст передавать в koi8-r а закодированное вложение в win1251 Улыбка
(Добавление)
то бишь функция будет выглядеть вот так

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function XMail( $from, $to, $text, $filename)
  4.  {
  5.    $path=$filename;
  6.  
  7. $fp = fopen($path,"rb");
  8.  
  9. if (!$fp)
  10.     {
  11.       print "Файл ".$path." не может быть прочитан";
  12.       exit();
  13.     }
  14. $file = fread($fp, filesize($path));
  15. fclose($fp);
  16. $path=trim(substr($path,strrpos($path,'/')+1));
  17. $boundary = "--".md5(uniqid(time()));
  18. $headers = "MIME-Version: 1.0\n";
  19. $headers .="From: ".$from." <zakaz@sprecord.ru> \n";
  20. $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
  21. $multipart = "--".$boundary."\n";
  22. $kod = 'koi8-r';
  23. $multipart .= "Content-Type: text/plain; charset=".$kod."\n";
  24. $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
  25. $multipart .= $text."\n";
  26. $message_part = "--".$boundary."\n";
  27. $kod = 'windows-1251'; //вот это и надо было добавить
  28. $message_part .= "Content-Type: application/octet-stream; charset=".$kod."\n"; name==\"".$path."\"\n"; // ну и тут её прописать конечно
  29. $message_part .= "Content-Transfer-Encoding: base64\n";
  30. $message_part .= "Content-Disposition: attachment; filename==\"".$path."\"\n\n";
  31. $message_part .= chunk_split(base64_encode($file))."\n";
  32. $multipart .= $message_part."--".$boundary."--\n";
  33. $headers = @convert_cyr_string ($headers,'w','k');
  34. $multipart = @convert_cyr_string ($multipart,'w','k');
  35.     return @mail($to, @convert_cyr_string ("Новости SpRecord.",'w','k'), $multipart, $headers);
  36.  
  37.  }
  38.  
  39.  

(Отредактировано автором: 16 Января, 2009 - 10:57:07)

 
 Top
Loki_
Отправлено: 17 Февраля, 2009 - 07:41:08
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




совсем забыл)) еще тут
и тут нужно оставить по одному знаку равно

(Отредактировано автором: 17 Февраля, 2009 - 07:43:25)

 
 Top
Гость
Отправлено: 17 Февраля, 2009 - 17:38:51
Post Id


УДАЛЁН










А может быть превью картинок это всетаки дело самостоятельное и надо их вставить в текста писаьма вручную - проверяется что тип вложения это картинка и тогда в HTML-тексте письма добавляются вручную это превьюшки
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB