За последние 24 часа нас посетил 17641 программист и 1711 роботов. Сейчас ищут 1995 программистов ...

Отправка почты с сайта с несколькими вложениями

Тема в разделе "Работа с почтой", создана пользователем sanystanislav, 3 ноя 2015.

  1. sanystanislav

    sanystanislav Новичок

    С нами с:
    3 ноя 2015
    Сообщения:
    1
    Симпатии:
    0
    Есть форма
    Код (Text):
    1.  
    2.  
    3. <html>
    4.  <head>
    5.  <title>random</title>
    6.    <meta charset="utf-8" />
    7.  
    8.  </head>
    9.  
    10.  <body>
    11.  
    12.                         <div id="orderform">
    13.                             <form name="namef" enctype="multipart/form-data" action="send.php" method="post">
    14.                        
    15.                            
    16.                             <p class="form"> <strong> First*:</strong>&nbsp;&nbsp;
    17.  
    18.                                     <input name="first" type="radio" value="a" checked>
    19.                                     A
    20.                                     <input name="first" type="radio" value="b">
    21.                                     B
    22.                                     <input name="first" type="radio" value="c">
    23.                                     C
    24.                                     <input name="first" type="radio" value="d">
    25.                                     D
    26.                                     <input name="first" type="radio" value="e">
    27.                                     E
    28.                             </p>
    29.  
    30.                             <p class="form"> <strong>Second*:</strong>&nbsp;&nbsp;
    31.                                     <select name="second" size="1">
    32.                                     <option value="a" selected> A </option>
    33.                                     <option value="b"> B </option>
    34.                                     <option value="c"> C </option>
    35.                                     <option value="d"> D </option>
    36.                                     </select>
    37.                             </p>
    38.                                
    39.                             <p class="form"> <strong>Third*:</strong>&nbsp;&nbsp;
    40.                                     <select name="third" size="1">
    41.                                     <option value="a" selected> A </option>
    42.                                     <option value="b"> B </option>
    43.                                     <option value="c"> C</option>
    44.                                     <option value="d"> D </option>
    45.                                     </select>
    46.                             </p>
    47.                            
    48.                             <p class="form"><strong>fourth*:</strong>&nbsp;&nbsp;<input type="text" name="fourth" size="40" maxlength="1000"></p>
    49.                            
    50.                             <p class="form"> <strong>Fifth:</strong><textarea name="fifth" cols="56" rows="5"></textarea></p>
    51.                            
    52.                             <p class="form"> <strong>Sixth*:</strong>&nbsp;&nbsp;<input type="text" name="sixth" size="2" maxlength="2"></p>
    53.                             <p class="form"> <strong>File:</strong>&nbsp;&nbsp; <input type="file" name="fileFF[]" multiple="true"></p>
    54.  
    55.                            
    56.                             <p class="form"> <strong> Seventh*:</strong>&nbsp;&nbsp;
    57.  
    58.                                     <input name="seventh" type="radio" value="a" checked>
    59.                                     A
    60.                                     <input name="seventh" type="radio" value="b">
    61.                                     B
    62.                                     <input name="seventh" type="radio" value="c">
    63.                                     C
    64.                                     <input name="seventh" type="radio" value="d">
    65.                                     D
    66.                                     <input name="seventh" type="radio" value="e">
    67.                                     E
    68.                             </p>
    69.                                    
    70.                             <p class="form"> <strong>Eighth*:</strong>&nbsp;&nbsp;
    71.                                 <input type="text" name="eighth" size="1" maxlength="3"> &nbsp;&nbsp;&nbsp;&nbsp;
    72.                                     <input name="eighth1" type="radio" value="a" checked>
    73.                                     A
    74.                                     <input name="eighth1" type="radio" value="b">
    75.                                     B
    76.                             </p>
    77.                            
    78.                             <p class="form"> <strong> Ninth*:</strong>&nbsp;&nbsp;
    79.  
    80.                                     <input name="ninth" type="radio" value="a" checked>
    81.                                     A
    82.                                     <input name="ninth" type="radio" value="b">
    83.                                     B
    84.                                     <input name="ninth" type="radio" value="c">
    85.                                     C
    86.                                     <input name="ninth" type="radio" value="d">
    87.                                     D
    88.                                     <input name="ninth" type="radio" value="e">
    89.                                     E
    90.                                     <input name="ninth" type="radio" value="f">
    91.                                     F
    92.                                     <input name="ninth" type="radio" value="g">
    93.                                     G
    94.                             </p>
    95.                            
    96.                             <p class="form"> <strong>Tenth:</strong>&nbsp;&nbsp;<input type="text" name="tenth" size="1" maxlength="3"> &nbsp;&nbsp;&nbsp;&nbsp; </p>
    97.                            
    98.                             <p class="form"> <strong>Eleventh:</strong>&nbsp;&nbsp;&nbsp;&nbsp;
    99.                                     <input type="checkbox" name="el1" value="a">a &nbsp;&nbsp;
    100.                                     <input type="checkbox" name="el2" value="b">b
    101.                             </p>
    102.                            
    103.                            
    104.                             <p class="form"> <strong>PI1*:</strong>&nbsp;&nbsp;<input type="text" name="pi1" size="10" maxlength="40"> </p>
    105.                             <p class="form"><strong>PI2*:</strong>&nbsp;&nbsp;<input type="password" name="pi2" size="10" maxlength="40"></p>
    106.                             <p class="form"><strong>PI3:</strong>&nbsp;&nbsp;<input type="text" name="pi3" size="10" maxlength="40"></p>
    107.                             <p class="form"><strong>PI4*:</strong>&nbsp;&nbsp;
    108.                                     <select name="pi4" size="1">
    109.                                     <option value="a" selected> --- </option>
    110.                                     <option value="b"> B </option>
    111.                                     <option value="c"> C </option>
    112.                                     <option value="d"> D </option>
    113.                                     <option value="other"> .... </option>
    114.                                     </select>
    115.                             </p>
    116.                                            
    117.                             <p class="form"><strong>PI5:</strong>&nbsp;&nbsp;<input type="text" name="pi5" size="12" maxlength="40"></p>
    118.                        
    119.                             <p class="form"><input type="submit" name="send" value="Submit"> &nbsp;&nbsp;&nbsp <input type="reset" name="res" value="clear_form"></p>
    120.                            
    121.                             </form>
    122.                         </div>  
    123.                        
    124.    
    125.  </body>
    126. </html>
    и ее обработчик, который отправляет письмо на почту лишь с одним файлом
    Код (Text):
    1. <?php
    2.  
    3. date_default_timezone_set('Europe/Kiev');
    4.  
    5.  
    6.   $first = $_POST['first'];
    7.   $second = $_POST['second'];
    8.   $third = $_POST['third'];
    9.   $fourth = $_POST['fourth'];
    10.   $fifth = $_POST['fifth'];
    11.   $sixth = $_POST['sixth'];
    12.   $seventh = $_POST['seventh'];
    13.   $eighth = $_POST['eighth'];
    14.   $eighth1 =$_POST['eighth1'];
    15.   $ninth = $_POST['ninth'];
    16.   $tenth = $_POST['tenth'];
    17.   $el1 = $_POST['el1'];
    18.   $el2 = $_POST['el2'];
    19.   $pi1 = $_POST['pi1'];
    20.   $pi2 = $_POST['pi2'];
    21.   $pi3 = $_POST['pi3'];
    22.   $pi4 = $_POST['pi4'];
    23.   $pi5 = $_POST['pi5'];
    24.   $date = date('d-m-Y');
    25.   $time = date('H:i');
    26.  
    27.   if (isset($_POST['$el1'])) { $el1 = $_POST['el1']; if ($el1 == '') { unset($el1);}}
    28.   if (isset($_POST['$el2'])) { $el2 = $_POST['el2']; if ($el2 == '') { unset($el2);}}
    29.  
    30.   $eleventh = $el1.'<br />'.$el2;
    31.  
    32. if (empty($first) or  empty($second) or empty($third) or empty($fourth)
    33.         or empty($sixth) or empty ($seventh) or empty($eighth)
    34.             or empty ($eighth1) or empty($ninth) or empty($pi1) or empty($pi2) or empty($pi4)) // Если путсые обьязательные поля то выводим:
    35.         {
    36.             exit ("<p align='center' style='color:#f00; font-size:16px;'>Вы ввели не всю информацию, <br />Вернитесь назад и заполните все поля</p>");
    37.         }
    38.  
    39.  
    40.  
    41.  
    42.        
    43.   // Если поле выбора вложения не пустое - закачиваем его на сервер
    44.  
    45.   if (!empty($_FILES['fileFF']['tmp_name']))
    46.  
    47.   {
    48.  
    49.     // Закачиваем файл
    50.  
    51.     $path = $_FILES['fileFF']['name'];
    52.  
    53.     if (copy($_FILES['fileFF']['tmp_name'], $path)) $picture = $path;
    54.  
    55.   }
    56.  
    57.   $thm = "информация с сайта";
    58.  
    59.   $msg ="      
    60. <html>
    61. <head>
    62.   <meta http-equiv='Content-Type' content='text/html>
    63.   <title>Формы</title>
    64. </head>
    65. <body>
    66.  
    67. Это письмо было сформировано и отправлено  ".$date."  в ".$time."
    68.  
    69. <br/><br/>
    70.  
    71. <table>
    72.     <tr>
    73.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>First:</td>
    74.         <td><b><i>".$first."</i></b></td>
    75.     </tr>
    76.     <tr>
    77.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Second:</td>
    78.         <td><b><i>".$second."</i></b></td>
    79.     </tr>
    80.     <tr>
    81.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Third:</td>
    82.         <td><b><i>".$third."</i></b></td>
    83.     </tr>
    84.     <tr>
    85.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Fourth:</td>
    86.         <td><b><i>".$fourth."</i></b></td>
    87.     </tr>
    88.     <tr>
    89.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Fifth:</td>
    90.         <td><b><i>".$fifth."</i></b></td>
    91.     </tr>
    92.     <tr>
    93.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Sixth:</td>
    94.         <td><b><i>".$sixth."</i></b></td>
    95.     </tr>
    96.     <tr>
    97.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Seventh:</td>
    98.         <td><b><i>".$seventh."</i></b></td>
    99.     </tr>
    100.     <tr>
    101.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Eighth:</td>
    102.         <td><b><i>".$eighth."</i></b></td>
    103.     </tr>
    104.    
    105.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Ninth:</td>
    106.         <td><b><i>".$ninth."</i></b></td>
    107.     </tr>
    108.     <tr>
    109.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Tenth:</td>
    110.         <td><b><i>".$tenth."</i></b></td>
    111.     </tr>
    112.     <tr>
    113.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>Eleventh:</td>
    114.         <td><b><i>".$eleventh."</i></b></td>
    115.     </tr>
    116.     <tr>
    117.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>PI1:</td>
    118.         <td><b><i>".$pi1."</i></b></td>
    119.     </tr>
    120.     <tr>
    121.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>PI2:</td>
    122.         <td><b><i>".$pi2."</i></b></td>
    123.     </tr>
    124.     <tr>
    125.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>PI3:</td>
    126.         <td><b><i>".$pi3."</i></b></td>
    127.     </tr>
    128.     <tr>
    129.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>PI4:</td>
    130.         <td><b><i>".$pi4."</i></b></td>
    131.     </tr>
    132.     <tr>
    133.         <td style='color:#ff0000; font-style:italic; padding:0 0 0 120;'>PI5:</td>
    134.         <td><b><i>".$pi5."</i></b></td>
    135.     </tr>
    136.    
    137.  </table>
    138.   </form>
    139. </body>
    140. </html>";
    141.  
    142.   $mail_to = "sanystanislav@mail.ru";
    143.  
    144.   // Отправляем почтовое сообщение
    145.  
    146.   if(empty($picture)) mail($mail_to, $thm, $msg);
    147.  
    148.   else send_mail($mail_to, $thm, $msg, $picture);
    149.  
    150.   // Вспомогательная функция для отправки почтового сообщения с вложением
    151.  
    152.   function send_mail($to, $thm, $html, $path)
    153.  
    154.   {
    155.  
    156.     $fp = fopen($path,"r");
    157.  
    158.     if (!$fp)
    159.  
    160.     {
    161.  
    162.       print "Файл $path не может быть прочитан";
    163.  
    164.       exit();
    165.  
    166.     }
    167.  
    168.     @$file = fread($fp, filesize($path));
    169.  
    170.     fclose($fp);
    171.  
    172.    
    173.  
    174.     $boundary = "--".md5(uniqid(time())); // генерируем разделитель
    175.  
    176.     $headers .= "MIME-Version: 1.0\n";
    177.    
    178.     $headers .= 'From: robot@server.com' . "\r\n" ;// от какого адресата будет приходить письмо на почту
    179.    
    180.     $headers .="Content-Type: multipart/mixed;  boundary=\"$boundary\"\n";
    181.  
    182.     $multipart .= "--$boundary\n";
    183.  
    184.     $kod = 'utf-8'; // или $kod = 'windows-1251';
    185.  
    186.     $multipart .= "Content-Type: text/html; charset=$kod\n";
    187.  
    188.     $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
    189.  
    190.     $multipart .= "$html\n\n";
    191.  
    192.  
    193.  
    194.     $message_part = "--$boundary\n";
    195.  
    196.     $message_part .= "Content-Type: application/octet-stream\n";
    197.  
    198.     $message_part .= "Content-Transfer-Encoding: base64\n";
    199.  
    200.     $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
    201.  
    202.     $message_part .= chunk_split(base64_encode($file))."\n";
    203.  
    204.     $multipart .= $message_part."--$boundary--\n";
    205.  
    206.  
    207.  
    208.     if(!mail($to, $thm, $multipart, $headers))
    209.  
    210.     {
    211.  
    212.       echo "К сожалению, письмо не отправлено";
    213.  
    214.       exit();
    215.  
    216.     }
    217.  
    218.  
    219.   }
    220. header('Refresh: 0; index.php'); // переадресация при удачном выполнении на главную страницу.
    221. // 0 - время, через которое переадресует. index.php - адрес куда переадресовывать
    222. ?>
    Что и как изменить в обработчике для отправки нескольких фалов за раз?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в функции send_mail обрабатывается только один файл. изменить надо... всё изменить надо. но по части отправки файла - в цикле принимать файлы из _FILES и в цикле же в функции send_mail их зашивать в письмо.
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв