Отправка файлов на Email

Discussion in 'PHP' started by Ali_MiX, 23 Dec 2007.

  1. Ali_MiX

    Ali_MiX Elder - Старейшина

    Joined:
    8 Oct 2006
    Messages:
    377
    Likes Received:
    67
    Reputations:
    -2
    доброе время суток
    у меня такая штука нужен скрипт который отправляет файлы на mail что то типа такого http://www.tcompressor.ru/Files-by-Email/
    у меня когда то что то такое было потом удалил из за ненадобности.
     
  2. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    374
    Reputations:
    460
    Простая отправка письма с атачментов, в нэте есть тоговые решения и классы для все этого, ну если ты хочешь что бы у тебя так же было как на http://www.tcompressor.ru/Files-by-Email/ то тебе прийдется выложить $ что бы тебе его написали:)
     
  3. Ali_MiX

    Ali_MiX Elder - Старейшина

    Joined:
    8 Oct 2006
    Messages:
    377
    Likes Received:
    67
    Reputations:
    -2
    у меня был простой, пишешь файл и жмешь кнопку отправить и всё проверяешь свою почту
     
  4. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    HTML:
    <table width=1 border=0> 
    
    <form action='mail.php' enctype='multipart/form-data' method='post'> 
    
    
    
    <tr><td width='50%'>To:</td><td align=right><input type=text name=mail_to maxlength=32></td></tr> 
    
    <tr><td width=50%>Subject:</td><td align=right><input type=text name=mail_subject maxlength=64></td></tr> 
    
    <tr><td colspan=2>Сообщение:<br><textarea cols=50 rows=8 name=mail_msg></textarea></td> 
    
    <tr><td width=50%>Photo:</td><td align=right><input type=file name=mail_file maxlength=64></td></tr> 
    
    </tr><tr><td colspan=2><input type=submit value='Отправить'></td></tr> 
    
    </form> 
    
    </table> >
    PHP:
    <?php
    if(empty($_POST['mail_to'])) exit("Введите адрес получателя"); 

      
    // проверяем правильности заполнения с помощью регулярного выражения 

      
    if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i"$_POST['mail_to'])) exit("Введите адрес в виде somebody@server.com"); 

      
    $picture ""

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

      
    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); 

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

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

      { if (
    $path) {  

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

        if (!
    $fp)   

        { print 
    "Cannot open file";   

          exit();   

        }   

        
    $file fread($fpfilesize($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-1253$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;  

      }

    ?>
     
  5. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    http://captcha.ru/breakings/
     
    1 person likes this.
  6. Ali_MiX

    Ali_MiX Elder - Старейшина

    Joined:
    8 Oct 2006
    Messages:
    377
    Likes Received:
    67
    Reputations:
    -2
    Спасибо Isis
    Но тут немного не то, там сам скрипт отправляет файл на почту а не с моего момпа
     
    #6 Ali_MiX, 25 Dec 2007
    Last edited: 25 Dec 2007