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]   

> Без описания
vanicon
Отправлено: 21 Ноября, 2011 - 20:29:22
Post Id



Частый посетитель


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


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




Есть форма отправки писем, где можно прикрепить файл а можно и не прикреплять...
Искал в интернете и на форуму смотрел пользовательские функции, пробовал их но ни что то не работают...
Написал свою, и она почему то не отправляет письма с вложением фалов, а простые отправляет. Вот сама функция:
PHP:
скопировать код в буфер обмена
  1.  
  2. function XMail($komu_email,$komu_name,$theme,$text,$filename) {
  3. $komu = ''.$komu_name.' <'.$komu_email.'>';
  4. $headers = "MIME-Version: 1.0\r\n";
  5. if($filename <> null){
  6. $filename_path = dirname(__FILE__).'/files/'.$filename;
  7. $format = strrchr($filename, '.');
  8. $bound = md5(uniqid(time()));
  9. $headers .= "Content-type: multipart/mixed; boundary='$bound'\r\n";
  10. $body = "--$bound";
  11. $body .= "Content-type: text/html; charset=windows-1251\r\n";
  12. $body .= "$text\r\n";
  13. $body .= "--$bound";
  14. $body .= "Content-Type: application/octet-stream;name='file$format'";
  15. $str_file = base64_encode($filename_path);
  16. $body .= "$str_file\r\n";
  17. $body .= "$bound--";
  18. }
  19. else{
  20. $headers .= "Content-type: text/html; charset=windows-1251\r\n";
  21. $body = $text;
  22. }
  23. return mail($komu, $theme, $body, $headers);
  24. }
  25.  

Подскажите пожалуйста, что не так...


-----
Так было, так есть и так будет
 
 Top
Мелкий Супермодератор
Отправлено: 22 Ноября, 2011 - 07:34:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




А сам-то файл вставлять будете? Сейчас вставляете только путь к файлу.


-----
PostgreSQL DBA
 
 Top
vanicon
Отправлено: 22 Ноября, 2011 - 10:03:55
Post Id



Частый посетитель


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


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




Переделал код но все ровно приходит тока пустое сообщение
PHP:
скопировать код в буфер обмена
  1.  
  2. function XMail($komu_email,$komu_name,$theme,$text,$filename) {
  3. $komu = ''.$komu_name.' <'.$komu_email.'>';
  4. $headers = "MIME-Version: 1.0\r\n";
  5. if($filename <> null){
  6. $filename_path = dirname(__FILE__).'/files/'.$filename;
  7. $format = strrchr($filename, '.');
  8. $bound = md5(uniqid(time()));
  9. $headers .= "Content-type: multipart/mixed; boundary='$bound'\r\n";
  10. $body = "--$bound";
  11. $body .= "Content-type: text/html; charset=windows-1251\r\n";
  12. $body .= "$text\r\n";
  13. $body .= "--$bound";
  14. $body .= "Content-Type: application/octet-stream;name='file$format'";
  15. $file = fopen($filename_path,'r');
  16. $filename_str = fread($file,filesize($filename_path));
  17. $str_file = base64_encode($filename_str);
  18. $body .= "$str_file\r\n";
  19. $body .= "$bound--";
  20. }
  21. else{
  22. $headers .= "Content-type: text/html; charset=windows-1251\r\n";
  23. $body = $text;
  24. }
  25. return mail($komu, $theme, $body, $headers);
  26. }
  27.  


-----
Так было, так есть и так будет
 
 Top
EuGen Администратор
Отправлено: 22 Ноября, 2011 - 10:21:47
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




http://php.net/manual/en/function.mail.php

PHP:
скопировать код в буфер обмена
  1. function multi_attach_mail($to, $files, $sendermail){
  2.     // email fields: to, from, subject, and so on
  3.     $from = "Files attach <".$sendermail.">";
  4.     $subject = date("d.M H:i")." F=".count($files);
  5.     $message = date("Y.m.d H:i:s")."\n".count($files)." attachments";
  6.     $headers = "From: $from";
  7.  
  8.     // boundary
  9.     $semi_rand = md5(time());
  10.     $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
  11.  
  12.     // headers for attachment
  13.     $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
  14.  
  15.     // multipart boundary
  16.     $message = "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
  17.     "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
  18.  
  19.     // preparing attachments
  20.     for($i=0;$i<count($files);$i++){
  21.         if(is_file($files[$i])){
  22.             $message .= "--{$mime_boundary}\n";
  23.             $fp =    @fopen($files[$i],"rb");
  24.         $data =    @fread($fp,filesize($files[$i]));
  25.                     @fclose($fp);
  26.             $data = chunk_split(base64_encode($data));
  27.             $message .= "Content-Type: application/octet-stream; name=\"".basename($files[$i])."\"\n" .
  28.             "Content-Description: ".basename($files[$i])."\n" .
  29.             "Content-Disposition: attachment;\n" . " filename=\"".basename($files[$i])."\"; size=".filesize($files[$i]).";\n" .
  30.             "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
  31.             }
  32.         }
  33.     $message .= "--{$mime_boundary}--";
  34.     $returnpath = "-f" . $sendermail;
  35.     $ok = @mail($to, $subject, $message, $headers, $returnpath);
  36.     if($ok){ return $i; } else { return 0; }
  37.     }


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vanicon
Отправлено: 22 Ноября, 2011 - 12:16:22
Post Id



Частый посетитель


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


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




Функция выполняет почти такие же действия как и мои, но может быть я чего - то не вижу? Покажите что не так в моей функции отправки?


-----
Так было, так есть и так будет
 
 Top
EuGen Администратор
Отправлено: 22 Ноября, 2011 - 12:20:53
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Верно, за исключением главного - содержимое файла эта функция все-таки добавляет к письму, читая файл:
EuGen пишет:
$fp = @fopen($files[$i],"rb");
$data = @fread($fp,filesize($files[$i]));
@fclose($fp);
$data = chunk_split(base64_encode($data));

и добавляя:
EuGen пишет:
$message .= "--{$mime_boundary}\n";
$message .= "Content-Type: application/octet-stream; name=\"".basename($files[$i])."\"\n" .
"Content-Description: ".basename($files[$i])."\n" .
"Content-Disposition: attachment;\n" . " filename=\"".basename($files[$i])."\"; size=".filesize($files[$i]).";\n" .
"Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";

(в теле цикла).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vanicon
Отправлено: 22 Ноября, 2011 - 12:56:27
Post Id



Частый посетитель


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


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




Исправил, но все ровно не получается отправить:
PHP:
скопировать код в буфер обмена
  1.  
  2. function XMail($komu_email,$komu_name,$theme,$text,$filename) {
  3. $komu = ''.$komu_name.' <'.$komu_email.'>';
  4. $headers = "MIME-Version: 1.0\r\n";
  5. if($filename <> null){
  6. $filename_path = dirname(__FILE__).'/files/'.$filename;
  7. $format = strrchr($filename, '.');
  8. $bound = md5(uniqid(time()));
  9. $headers .= "Content-type: multipart/mixed; boundary='$bound'\r\n";
  10. $body = "--$bound";
  11. $body .= "Content-type: text/html; charset=windows-1251\r\n";
  12. $body .= "$text\r\n";
  13. $body .= "--$bound";
  14. $body .= "Content-Type: application/octet-stream;name='file$format'";
  15. $file = fopen($filename_path,'rb');
  16. $filename_str = fread($file,filesize($filename_path));
  17. @fclose($file);
  18. $str_file = chunk_split(base64_encode($filename_str));
  19. $body .= "Content-Description: ".basename('file'.$format);
  20. $body .= "Content-Disposition: attachment; filename='".basename('file'.$format)."'; size=".filesize($filename_path);
  21. $body .= "Content-Transfer-Encoding: base64\n\n".$str_file."\n\n";
  22. $body .= "$bound--";
  23. }
  24. else{
  25. $headers .= "Content-type: text/html; charset=windows-1251\r\n";
  26. $body = $text;
  27. }
  28. return mail($komu, $theme, $body, $headers);
  29. }
  30.  


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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB