За последние 24 часа нас посетили 63097 программистов и 1611 роботов. Сейчас ищут 1052 программиста ...

Как сделать отправку почты с несколькими вложениями?

Тема в разделе "Прочие вопросы по PHP", создана пользователем zahermaher, 28 янв 2015.

  1. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    Здравствуйте. Пока получается только отправить сообщение ,но только с одним вложением.
    Пытаюсь сделать так ,но все равно приходит только одно вложение.
    Код (Text):
    1.  
    2. <?php
    3.   $to="mail@mail.ru";
    4.  
    5.    $paths=array();
    6.  
    7.       $paths[0]= $_REQUEST['mail_file0'];
    8.  
    9.     $paths[1]= $_REQUEST['mail_file1'];
    10.  
    11.   $thm = "Заявка ";
    12.  
    13.   $address = $_REQUEST['address'];
    14.  
    15.   $tipned = $_REQUEST['tipned'];
    16.  
    17.   $vidned = $_REQUEST['vidned'];
    18.  
    19.   $tipstr = $_REQUEST['tipstr'];
    20.  
    21.   $ploshad = $_REQUEST['ploshad'];
    22.  
    23.   $etazh = $_REQUEST['etazh'];
    24.  
    25.   $remont = $_REQUEST['remont'];
    26.  
    27.   $kommyn = $_REQUEST['kommyn'];
    28.  
    29.   $more = $_REQUEST['more'];
    30.  
    31.   $price = $_REQUEST['price'];
    32.  
    33.   $info = $_REQUEST['info'];
    34.  
    35.   $msg = "<table>
    36.  
    37.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Адрес</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$address."</td></tr>
    38.  
    39.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Тип недвижимости</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$tipned."</td></tr>
    40.  
    41.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Вид недвижимости</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$vidned."</td></tr>
    42.  
    43.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Тип строения\участка</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$tipstr."</td></tr>
    44.  
    45.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Площадь</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$ploshad."</td></tr>
    46.  
    47.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Этажность</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$etazh."</td></tr>
    48.  
    49.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Состояние ремонта</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$remont."</td></tr>
    50.  
    51.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Коммуникации</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$kommyn."</td></tr>
    52.  
    53.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Удалённость от моря (метров)</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$more."</td></tr>
    54.  
    55.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Цена</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$price."</td></tr>
    56.  
    57.           <tr><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>Дополнительная информация. Комментарий</td><td style='border:1px solid #000;padding:10px 10px 10px 10px;'>".$info."</td></tr>
    58.  
    59.           </table>";
    60.  
    61.  
    62.     send_mail($to, $thm, $msg, $paths);
    63.  
    64.  
    65.  
    66.   // Вспомогательная функция для отправки почтового сообщения с вложением
    67.  
    68.   function send_mail($to, $thm, $html, $paths)
    69.   {
    70.     $boundary = "--".md5(uniqid(time())); // генерируем разделитель
    71.     $headers .= "MIME-Version: 1.0\n";
    72.  
    73.     $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
    74.  
    75.     $multipart .= "--$boundary\n";
    76.  
    77.     $kod = 'utf-8';
    78.  
    79.     $multipart .= "Content-Type: text/html; charset=$kod\n";
    80.  
    81.     $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
    82.  
    83.  
    84.  
    85.     $multipart .= "$html\n\n";
    86.    
    87.    
    88. foreach ($paths as $key => $path) {
    89.  
    90. $message_part = "--$boundary\n";
    91.  
    92.     $message_part .= "Content-Type: application/octet-stream\n";
    93.  
    94.     $message_part .= "Content-Transfer-Encoding: base64\n";
    95.  
    96.     $fp = fopen($path,"r");
    97.  
    98.     if (!$fp)
    99.  
    100.     {
    101.  
    102.       print "Файл $path не может быть прочитан";
    103.  
    104.       exit();
    105.  
    106.     }
    107.  
    108.     $file = fread($fp, filesize($path));
    109.  
    110.     fclose($fp);
    111.  
    112.     $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
    113.  
    114.     $message_part .= chunk_split(base64_encode($file))."\n";
    115.  
    116.     $multipart .= "\n\n" .$message_part."--$boundary--\n";
    117.     }
    118.     if(!mail($to, $thm, $multipart, $headers))
    119.     {
    120.       echo "К сожалению, письмо не отправлено";
    121.       exit();
    122.     }
    123.   }
    124. ?>
    Помогите что сделать ? как дописать?
     
  2. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    то есть вот так пытаюсь повторять заголовки письма ,чтобы отправить несколько файлов,но приходит только один файл.
    может я не то форичу?

    Код (Text):
    1. foreach ($paths as $key => $path) {
    2.  
    3. $message_part = "--$boundary\n";
    4.  
    5.     $message_part .= "Content-Type: application/octet-stream\n";
    6.  
    7.     $message_part .= "Content-Transfer-Encoding: base64\n";
    8.  
    9.    $fp = fopen($path,"r");
    10.  
    11.     if (!$fp)
    12.  
    13.     {
    14.  
    15.       print "Файл $path не может быть прочитан";
    16.  
    17.       exit();
    18.  
    19.     }
    20.  
    21.     $file = fread($fp, filesize($path));
    22.  
    23.     fclose($fp);
    24.  
    25.     $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
    26.  
    27.     $message_part .= chunk_split(base64_encode($file))."\n";
    28.  
    29.     $multipart .= "\n\n" .$message_part."--$boundary--\n";
    30.     }
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    воспользуйся чемнить готовым
     
  4. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    да. неожиданный ответ.) а чем например готовым посоветуете пользоваться?

    P.S. Первоначальный вопрос топика остается актуальным.
     
  5. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    нашел простенький скрипт отправки с одним вложением и форичем допилил.
    код с первого поста был громоздкий ,вот я и запутался в нем.
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Т.е. победил?
     
  7. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    Есть такая класс - PHPMailer.php - которым или напрямую можно пользоваться, или унаследоваться и отправлять письма с любого места одной строкой с любым количеством вложений через любые каналы и тп.