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

Форум PHP

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

 

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

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

тема: Отправка почтой файла
 
 автор: Deathless   (19.01.2007 в 09:41)   письмо автору
 
 


<?
class multi_mail
{
  var 
$from;
  var 
$parts;
  var 
$to;
  var 
$headers;
  var 
$body;


  function 
multi_mail()
  {
       
$this -> from "";
       
$this -> to "";
       
$this -> body "";
       
$this -> headers = Array();
       
$this -> subject "";
  }

  function 
attach_file($file_name "" ,$file_content,$encoding_type "application/octet-stream")
  {
    
$this -> headers[] = array(
             
"name" => $file_name,
             
"content" => $file_content,
             
"encode" => $encoding_type
             
);
  }

  function 
build_letter($header)
  {
    
$letter $header["content"];
    if (
$header["encode"] != "text/plain"):
    
$letter chunk_split(base64_encode($letter));
    
$encoding "base64";
    else:
    
$encoding $header["encode"];
    endif;
    return 
"Content-Type: ".$header["encode"].
           (
$header["name"]? ".; name = \"".$header["name"]."\"" "")."\nContent-Transfer-Encoding: $encoding\n\n$letter\n";
  }

  function 
set_multipart_mail()
  {
    
$boundary 'b'.md5(uniqid(time()));

    
$multipart "Content-Type: multipart/mixed; boundary =$boundary\n\nThis is a MIME encoded letter\n\n--$boundary";
    for(
$step sizeof($this->headers)-1$step >=0$step--)
    {
      
$multipart .= "\n".$this->build_letter($this->headers[$step])."--$boundary";
    }
    return 
$multipart .= "--\n";
  }

  function 
get_full_message()
  {
    
$mime "";
    if (!empty(
$this->from)):
       
$mime .= "From: ".$this->from." \n";
    endif;
    if (!empty(
$this->body)):
       
$this -> attach_file("",$this->body,"text/plain");
       
$mime .= "MIME-Version: 1.0\n".$this->set_multipart_mail();
    endif;

    return 
$mime;
  }


  function 
send_mail()
  {
    
$mime $this -> get_full_message(false);
    
mail($this->to,$this->subject,"",$mime,$from);
  }


}
?>

Ответ прокси сервера на єтот скрипт : SMTP server response: 550 Invalid local part of From: webmaster@192.168.0.4 (:)

   
 
 автор: dert   (19.01.2007 в 10:14)   письмо автору
 
   для: Deathless   (19.01.2007 в 09:41)
 

настройки сервера Mail не правильные

   
 
 автор: Deathless   (19.01.2007 в 11:12)   письмо автору
 
   для: dert   (19.01.2007 в 10:14)
 

Все под исправил скрипт отправка идет но воть проблема =(((((
вот так выглядит письмо
IME-Version: 1.0
Content-Type: multipart/mixed; boundary =b5b28de73c202c5d09d5267e57d4f0c02
This is a MIME encoded letter
--b5b28de73c202c5d09d5267e57d4f0c02
Content-Type: text/plain
Content-Transfer-Encoding: text/plain
This is a text body. See file in Attachemnt Release C 15
--b5b28de73c202c5d09d5267e57d4f0c02
Content-Type: application/x-zip-compressed.; name = "197900.zip"
Content-Transfer-Encoding: base64
UEsDBBQAAgAIAO6mES/U5RXksgEAAJQCAAAKAAAAcmVhZG1lLnR4dE 1R22rbQBB9F+gfpn6KwVbp
LQ/5G0PcumBj06Y/WFrap0JpP2C83alWWmm8O0pQgkyckZwQv2k 0e86cy18OFYL1B2DZBTSlg/lq
9nEJNUJTYt4ZpKorAG2gCBEs79jXTsjv664 CHaga4DmW2Cr6GgvPpodHCoYCnAkL/KfHcdJvShYO
XMG2sSQQMCoN/kPZxwM4iKiKrntd4yxNvil33Q96kAt9vGXp hnUH0ZNtlMF0R1H745/7O0dgqYhi
3OEiTV5l8EvK0Om+Vwerzx+yzWIDu+DUQMV3Draey5oF0+R1Bj/ziga2keu/DhoAjeBiPAZD3rWu
7qA32KKngVBRbzL4zblVC2BdoFL9ufvnEAj ORl82y/Xs8uVoAs47KLFU2SBYAZE+zNmQ0FgTDpgH
ulUBGqwS5LhzcT9EbCLdpMnbDH6gd09mnoM+9ZYm7zL4HvXQDYu2pVgJPIA0uUb1R6NpWpd jUcNU

   
 
 автор: dert   (19.01.2007 в 11:38)   письмо автору
 
   для: Deathless   (19.01.2007 в 11:12)
 

А вы используете SMTP сервер как прямой или альтернативной отправки? и если он используется в локальной сети то в настройках в поле "локальный домен " уберите значение

   
 
 автор: Trianon   (19.01.2007 в 13:03)   письмо автору
 
   для: Deathless   (19.01.2007 в 11:12)
 

Вероятно, в строку "MIME-Version: 1.0" Вы воткнули двойной перевод строки.
Вообще же передавать тело письма в параметре списка заголовков - весьма самонадеянное решение.

   
 
 автор: dert   (19.01.2007 в 13:11)   письмо автору
 
   для: Trianon   (19.01.2007 в 13:03)
 

Да и вообще зачем такой огород городить? Вот скрипт проще:


<?
$to
="name@mydomen.ru";
        
$from="from@mydomen.ru";
        
$subject="helo";
         
$text="hello people";
        
$file="newfolder/test.jpg";


        
sendmsg($to$subject$text$from$file$type);

        function 
sendmsg($to$subject$text$from$file$type) {

        
$content fread(fopen($file,"r"),filesize($file));
        
$content chunk_split(base64_encode($content));
        
$uid strtoupper(md5(uniqid(time())));
        
$name basename($file);




        
$header "From: $from\nReply-To: $from\n";
        
$header .= "MIME-Version: 1.0\n";
        
$header .= "Content-Type: multipart/mixed; boundary=$uid\n";

        
$header .= "--$uid\n";
        
$header .= "Content-Type: text/plain\n";
        
$header .= "Content-Transfer-Encoding: 8bit\n\n";
        
$header .= "$text\n";

        
$header .= "--$uid\n";
        
$header .= "Content-Type: $type; name=\"$name\"\n";

        
$header .= "Content-Transfer-Encoding: base64\n";
        
$header .= "Content-Disposition: attachment; filename=\"$name\"\n\n";
        
$header .= "$content\n";

        
$header .= "--$uid--";

        
mail($to$subject""$header);

        return 
true;
}


?>

   
 
 автор: Trianon   (19.01.2007 в 13:21)   письмо автору
 
   для: dert   (19.01.2007 в 13:11)
 

Ну... он, конечно, стал проще - в том плане, что теперь содержит явную ошибку.

        $header .= "Content-Type: multipart/mixed; boundary=$uid\n"; 

        $header .= "--$uid\n"; 

В остальном он отличается слабо. Он точно также передает тео письма пустым.

   
 
 автор: dert   (19.01.2007 в 13:34)   письмо автору
 
   для: Trianon   (19.01.2007 в 13:21)
 

Ошибок здесь нет! сам проверял и он работает на хостинге. На локальном сервере ты прав передает тело письма пустым

   
 
 автор: Trianon   (19.01.2007 в 17:48)   письмо автору
 
   для: dert   (19.01.2007 в 13:34)
 

>Ошибок здесь нет! сам проверял и он работает на хостинге. На локальном сервере ты прав передает тело письма пустым
Если это и означает отсутствие ошибок... пожалуй, мне сказать нечего. Ну да ладно, оставим...

Вот Ваш вызов:

mail($to, $subject, "", $header); 

третий параметр функции mail - тело сообщения - задан у Вас пустой строкой.

Почему в таком разе Вы ожидаете, что письмо придет непустым?!

   
 
 автор: Deathless   (19.01.2007 в 17:17)   письмо автору
 
   для: dert   (19.01.2007 в 13:11)
 

Попробовал скрипт. Да действительно работает только письмо приходт с файлом размером в 0 байт и без сообщения =(

   
Rambler's Top100
вверх

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