Отправка почты с вложением mail php

Discussion in 'PHP' started by GAiN, 2 Mar 2013.

  1. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    Есть скрипт который отправляет почту по средствам php mail
    как сделать к нему прикрепление файлов?

    PHP:
    <?php 
    if($_POST['submit']) { 
            
    $title substr(htmlspecialchars(trim($_POST['title'])), 01000); 
            
    $mess =  substr(htmlspecialchars(trim($_POST['mess'])), 01000000); 
            
    // $to - кому отправляем 
            
    $to 'test@test.ru'
            
    // $from - от кого 
            
    $from='test@test.ru'

            
    mail($to$title$mess'From:'.$from); 
            echo 
    'Спасибо! Ваше письмо отправлено.'

    ?> 
    <form action="" method=post> 

    <p>форма <p> 
                  <div align="center"> 
                  Teма<br /> 
                  <input type="text" name="title" size="40"><br /> 
                  Сообщение<br /> 
                  <textarea name="mess" rows="10" cols="40"></textarea> 
                  <br /> 
                  <input type="submit" value="Отправить" name="submit"></div> 
    </form>
    помогите пожалуйста !

    спасибо !
     
  2. tru5t

    tru5t New Member

    Joined:
    9 Sep 2011
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    Вот у себя нашёл. Не проверял. Как говорится, ненужное удалить, нужное подчеркнуть :)
    PHP:
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head> 
    <title>Anonym mail sender with attachment</title> 
    </head> 
    <body> 
    <form method="POST" > 
    <input name="action" type="hidden" value="send" /> 
    <p><label for="from_mail" >С какого адреса e-mail: <input type="text" name="from_mail" /></label></p> 
    <p><label for="from_name" >От чьего имени: <input type="text" name="from_name" /></label></p> 
    <p><label for="path" >Относительный путь к файлу: <input type="text" name="path" /></label></p> 
    <p><label for="theme" >Тема: <input type="text" name="theme" /></label></p> 
    <textarea name="message" cols="30" rows="5" ></textarea> 
    <input type="submit" name="submit" value="Начать" /> 
    </form> 

    <?php 

      
    // Вспомогательная функция для отправки почтового сообщения с вложением  
      
    function send_mail($from_name$from_mail$thm$msg$path)  
      {  
        
    $fp fopen($path,"r");  
        if (!
    $fp)  
        {  
          print 
    "Файл $path не может быть прочитан";  
          exit();  
        }  
        
    $file fread($fpfilesize($path));  
        
    fclose($fp);  
        
    // Создаем сообщение 
        
    $boundary "--".md5(uniqid(time())); // генерируем разделитель  
        
    $headers .= "MIME-Version: 1.0\n";  
        
    $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";  
        
    $headers .= "From: $from_name <$from_mail>\n"
        
    $multipart .= "--$boundary\n";  
        
    $encoding 'windows-1251'
        
    $multipart .= "Content-Type: text/html; charset=$encoding\n";  
        
    $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";  
        
    $multipart .= "$msg\n\n";  

        
    $message_part "--$boundary\n";  
        
    $message_part .= "Content-Type: application/octet-stream\n";       
        
    $message_part .= "Content-Transfer-Encoding: base64\n";  
        
    $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";  
        
    $message_part .= chunk_split(base64_encode($file))."\n";  
        
    $multipart .= $message_part."--$boundary--\n";  
         
        
    // Начинаем отправку 
         
        
    $str_to=file_get_contents("maillist.txt"); 
        
    $maillist=explode("\r\n",$str_to); 
        foreach(
    $maillist as $mail
        { 
            if(!
    mail($mail$thm$multipart$headers))  
            {  
                echo 
    "Не отправлено:".$mail."<br />";  
            } 
            else 
            { 
                echo 
    "Отправлено:".$mail."<br />" 
            } 
        } 
      }  
       
       
        if(isset(
    $_POST['action']) && $_POST['action']=="send"
        { 
            echo 
    "<br />Начинаем отправку<br />"
            
    send_mail($_POST['from_name'],$_POST['from_mail'],$_POST['theme'],$_POST['message'],$_POST['path']); 
        } 
         

    echo 
    "</body>"
    echo 
    "</html>"
    ?> 
     
    1 person likes this.