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
Форумы портала PHP.SU :: Версия для печати :: Отправка писем с сайта с вложениями
Форумы портала PHP.SU » PHP » Программирование на PHP » Отправка писем с сайта с вложениями

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

1. Loki_ - 15 Января, 2009 - 10:46:48 - перейти к сообщению
Вот функция отправки сообщения с вложением

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.  


Проблема в том, что в аутлуке при открытии письма переданного с картинкой она не отображается в нижней части письма, при этом файл нормально скачивается и открывается. Однако
2. Владимир - 15 Января, 2009 - 11:18:11 - перейти к сообщению
в смысле не отображается?
не отображается что прикреплен файл?
или не отображается содержимое прикрепленного файла в тексте письма в Аутлуке?
3. Loki_ - 16 Января, 2009 - 10:48:44 - перейти к сообщению
не отображается содержимое прикрепленного файла в тексте письма в Аутлуке

з.ы. если для кого то так понятней то не отображается 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.  
4. Loki_ - 17 Февраля, 2009 - 07:41:08 - перейти к сообщению
совсем забыл)) еще тут
и тут
PHP:
скопировать код в буфер обмена
  1. filename==\""
нужно оставить по одному знаку равно
5. Гость - 17 Февраля, 2009 - 17:38:51 - перейти к сообщению
А может быть превью картинок это всетаки дело самостоятельное и надо их вставить в текста писаьма вручную - проверяется что тип вложения это картинка и тогда в HTML-тексте письма добавляются вручную это превьюшки

 

Powered by ExBB FM 1.0 RC1