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

Форум PHP

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

 

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

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

тема: Вложенный *.DOC
 
 автор: BMW   (24.07.2008 в 14:46)   письмо автору
 
 

Здравствуйте! Попытался отправить скриптом представленного на сайте doc документ, но потерпел фиаско! Уважаемые как можно отправить прикрипленным doc документ, а то тот вариант толлько фоты шлет?

   
 
 автор: Trianon   (24.07.2008 в 15:16)   письмо автору
 
   для: BMW   (24.07.2008 в 14:46)
 

Какой - тот?
Вы никакой не показали.

   
 
 автор: BMW   (24.07.2008 в 15:26)   письмо автору
 
   для: Trianon   (24.07.2008 в 15:16)
 

// Если поле выбора вложения не пустое - закачиваем его на сервер 

  if (!empty($_FILES['mail_file']['tmp_name'])) 

  { 

    // Закачиваем файл 

    $path = $_FILES['mail_file']['name']; 

    if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path; 

  } 

  $thm = $_POST['mail_subject'];

  $msg = $_POST['mail_msg'];

  $mail_to = $_POST['mail_to'];

  // Отправляем почтовое сообщение 

  if(empty($picture)) mail($mail_to, $thm, $msg); 

  else send_mail($mail_to, $thm, $msg, $picture); 

  // Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)

  function send_mail($mail_to, $thema, $html, $path)   

  { if ($path) {  

    $fp = fopen($path,"rb");   

    if (!$fp)   

    { print "Cannot open file";   

      exit();   

    }   

    $file = fread($fp, filesize($path));   

    fclose($fp);   

    }  

    $name = "file.ext"; // в этой переменной надо сформировать имя файла (без всякого пути)  

    $EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём

    $boundary     = "--".md5(uniqid(time()));  // любая строка, которой не будет ниже в потоке данных.  

    $headers    = "MIME-Version: 1.0;$EOL";   

    $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  

    $headers   .= "From: address@server.com";  

      

    $multipart  = "--$boundary$EOL";   

    $multipart .= "Content-Type: text/html; charset=windows-1251$EOL";   

    $multipart .= "Content-Transfer-Encoding: base64$EOL";   

    $multipart .= $EOL; // раздел между заголовками и телом html-части 

    $multipart .= chunk_split(base64_encode($html));   



    $multipart .=  "$EOL--$boundary$EOL";   

    $multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";   

    $multipart .= "Content-Transfer-Encoding: base64$EOL";   

    $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";   

    $multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла 

    $multipart .= chunk_split(base64_encode($file));   



    $multipart .= "$EOL--$boundary--$EOL";   

      

        if(!mail($mail_to, $thema, $multipart, $headers))   

         {return False;           //если не письмо не отправлено

      }  

    else { //// если письмо отправлено

    return True;  

    }  

  exit;  

  }



Меня собственно интересует как взять файл из ОБЗОРА и не закачивая взять? не могли бы вы объяснить этот момент?

   
 
 автор: Trianon   (24.07.2008 в 15:45)   письмо автору
 
   для: BMW   (24.07.2008 в 15:26)
 

В каком смысле - не закачивая?
И что значит - из обзора?

И зачем строки через одну пустыми прореживать?
(Я в курсе, что на сайте пример оформил дебил, но Вы-то зачем уподобляетесь?)

   
 
 автор: BMW   (24.07.2008 в 15:58)   письмо автору
 
   для: Trianon   (24.07.2008 в 15:45)
 

>(Я в курсе, что на сайте пример оформил дебил, но Вы-то зачем уподобляетесь?)

Улыбнуло))

Но вот вернусь к конкретной проблеме:

  $path = $_FILES['mail_file']['name'];
 $fp = fopen($path,"rb");   
 $attachment = fread($fp, filesize($path)); 


В данном месте происходит ошибка, если прикрепляется не(!) рисунок!...в моем случае doc...
Пишет следующие:
Warning: fopen(1.doc) [function.fopen]: failed to open stream: No such file or directory in /home//public_html//mail.php on line 67

Warning: filesize() [function.filesize]: stat failed for 1.doc in /home//public_html//mail.php on line 68

Warning: fread(): supplied argument is not a valid stream resource in /home//public_html//mail.php on line 68

Подскажите пожалуйста как быть?

   
 
 автор: Trianon   (24.07.2008 в 16:06)   письмо автору
 
   для: BMW   (24.07.2008 в 15:58)
 

>Но вот вернусь к конкретной проблеме:

>[code] $path = $_FILES['mail_file']['name'];
> $fp = fopen($path,"rb");
>Подскажите пожалуйста как быть?

В поле $_FILES['mail_file']['name'] не будет живого серверного имени. Там в чисто информационных целях помещается имя файла на машине клиента. Серверное имя живет в поле $_FILES['mail_file']['tmp_name'];

   
 
 автор: BMW   (24.07.2008 в 16:59)   письмо автору
 
   для: Trianon   (24.07.2008 в 16:06)
 

Спасибо, помогло.......а вот у меня в заголовке FROM не передается((
    $header="Content-type: text/plain; charset=\"windows-1251\""; 
    $header.="From: rty@в.com\r\n";
    $header.="Subject: $head\r\n";
    $header.="Content-type: text/plain; charset=\"windows-1251\"";

В чем тут дело?

   
 
 автор: Trianon   (24.07.2008 в 18:22)   письмо автору
 
   для: BMW   (24.07.2008 в 16:59)
 

Выведите переменную $header - увидите причину.

   
 
 автор: BMW   (24.07.2008 в 15:16)   письмо автору
 
   для: BMW   (24.07.2008 в 14:46)
 

$path = 'http://sumsung.ru/map.gif';
$attachment = fread(fopen($path, "r"), filesize($path));


тут что то не так...пишет ошибку((

   
Rambler's Top100
вверх

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