Отправка email с двумя вложенными файлами

PHP:
<head>

    <meta charset="utf-8">
<body>

<?php
$to = ' @gmail.com';

$_POST['sendMail'];
  $name  = substr( $_POST['name'], 0, 64 );
  $tel = substr( $_POST['tel'], 0, 64 );
  $email   = substr( $_POST['email'], 0, 64 );
  $message = substr( $_POST['message'], 0, 250 );
  $zayav = substr( $_POST['zayav'], 0, 200 );
       echo 'Ваше сообщение отравлено и будет рассмотрено в ближайшее  время.<a href="#" onclick="history.back();return false;">Назад</a>';

 
  if ( !empty( $_FILES['file']['tmp_name'] ) and $_FILES['file']['error'] == 0 ) {
    $filepath = $_FILES['file']['tmp_name'];
    $filename = $_FILES['file']['name'];
  } else {
    $filepath = '';
    $filename = '';
  }
if ( !empty( $_FILES['file2']['tmp_name2'] ) and $_FILES['file2']['error'] == 0 ) {
    $filepath2 = $_FILES['file2']['tmp_name2'];
    $filename2 = $_FILES['file2']['name2'];
  } else {
    $filepath2 = '';
    $filename2 = '';
  }
  $body = "Акция:\r\n".$zayav."\r\n\r\n";
  $body .= "Имя:\r\n".$name."\r\n\r\n";
  $body .= "Контактный номер:\r\n".$tel."\r\n\r\n";
  $body .= "E-mail:\r\n".$email."\r\n\r\n";
  $body .= "Описание заказа:\r\n".$message;

  send_mail($to, $body, $email, $filepath, $filename);



$filename = 'somefile.txt';
$text = $to.$body.$email.$filepath.$filename;
//записываем текст в файл
file_put_contents($filename, $text);




// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($to, $body, $email, $filepath, $filename, $filepath2, $filename2)
{
  $subject = 'Заказ на сайте ';
  $boundary = "--".md5(uniqid(time())); // генерируем разделитель
  $headers = "From: ".$email."\r\n"; 
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
  $multipart = "--".$boundary."\r\n";
  $multipart .= "Content-type: text/plain; charset=\"utf-8\"\r\n";
  $multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";

  $body = $body."\r\n\r\n";
  $multipart .= $body;
  $file = '';
  if ( !empty( $filepath ) ) {
    $fp = fopen($filepath, "r");
    if ( $fp ) {
      $content = fread($fp, filesize($filepath));
      fclose($fp);
      $file .= "--".$boundary."\r\n";
      $file .= "Content-Type: application/octet-stream\r\n";
      $file .= "Content-Transfer-Encoding: base64\r\n";
      $file .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
      $file .= chunk_split(base64_encode($content))."\r\n";
    }
  }
  //загрузка второго файла
  if ( !empty( $filepath2 ) ) {
    $fp = fopen($filepath2, "r");
    if ( $fp ) {
      $content = fread($fp, filesize($filepath2));
      fclose($fp);
      $file .= "--".$boundary."\r\n";
      $file .= "Content-Type: application/octet-stream\r\n";
      $file .= "Content-Transfer-Encoding: base64\r\n";
      $file .= "Content-Disposition: attachment; filename=\"".$filename2."\"\r\n\r\n";
      $file .= chunk_split(base64_encode($content))."\r\n";
    }
  }
  $multipart .= $file."--".$boundary."--\r\n";
    mail($to, $subject, $multipart, $headers);
}
?>
</head>
</body>
сделал как посоветовали, в итоге сообщение отправляется, но только с первым вложением...
Есть еще 2 ошибки:
Код:
 Warning: Missing argument 6 for send_mail(), called in /home/---/---/htdocs/www/sendfile.php on line 42 and defined in /home/---/---/htdocs/www/sendfile.php on line 55

Warning: Missing argument 7 for send_mail(), called in /home/---/---/htdocs/www/sendfile.php on line 42 and defined in /home/---/---/htdocs/www/sendfile.php on line 55

Дополнительное поле назвал file2
 
Последнее редактирование:
  • Заблокирован
  • #12
все верно, я опечатался

а этот варнинг лечится просто заменой
PHP:
function send_mail($to, $body, $email, $filepath, $filename, $filepath2, $filename2)
на
PHP:
function send_mail($to, $body, $email, $filepath, $filename, $filepath2='', $filename2='')
и
PHP:
if ( !empty( $filepath2 ) &&  $filepath2 != '') {
 
Последнее редактирование модератором:
  • Нравится
Реакции: Yulo
все верно, я опечатался

а этот варнинг лечится просто заменой
PHP:
function send_mail($to, $body, $email, $filepath, $filename, $filepath2, $filename2)
на
PHP:
function send_mail($to, $body, $email, $filepath, $filename, $filepath2='', $filename2='')
и
PHP:
if ( !empty( $filepath2 ) &&  $filepath2 != '') {
Ошибка действительно исчезла... но файл пришел на почту один :(
 
  • Заблокирован
  • #14
напиши пожалуйста весь скрипт, а то уже с изменениями суть потерялась
 
PHP:
     <head>
     
        <meta charset="utf-8">
    <body>
     
    <?PHP
    $to = ' @gmail.com';
     
    $_POST['sendMail'];
      $name  = substr( $_POST['name'], 0, 64 );
      $tel = substr( $_POST['tel'], 0, 64 );
      $email   = substr( $_POST['email'], 0, 64 );
      $message = substr( $_POST['message'], 0, 250 );
      $zayav = substr( $_POST['zayav'], 0, 200 );
           echo 'Ваше сообщение отравлено и будет рассмотрено в ближайшее  время.<a href="#" onclick="history.back();return false;">Назад</a>';
     
     
      if ( !empty( $_FILES['file']['tmp_name'] ) and $_FILES['file']['error'] == 0 ) {
        $filepath = $_FILES['file']['tmp_name'];
        $filename = $_FILES['file']['name'];
      } else {
        $filepath = '';
        $filename = '';
      }
    if ( !empty( $_FILES['file2']['tmp_name2'] ) and $_FILES['file2']['error'] == 0 ) {
        $filepath2 = $_FILES['file2']['tmp_name2'];
        $filename2 = $_FILES['file2']['name2'];
      } else {
        $filepath2 = '';
        $filename2 = '';
      }
      $body = "Акция:\r\n".$zayav."\r\n\r\n";
      $body .= "Имя:\r\n".$name."\r\n\r\n";
      $body .= "Контактный номер:\r\n".$tel."\r\n\r\n";
      $body .= "E-mail:\r\n".$email."\r\n\r\n";
      $body .= "Описание заказа:\r\n".$message;
     
      send_mail($to, $body, $email, $filepath, $filename, $filepath2, $filename2);
     
     
     
    $filename = 'somefile.txt';
    $text = $to.$body.$email.$filepath.$filename.$filepath2,$filename2;
    //записываем текст в файл
    file_put_contents($filename, $text);
     
     
     
     
    // Вспомогательная функция для отправки почтового сообщения с вложением
    function send_mail($to, $body, $email, $filepath, $filename, $filepath2, $filename2)
    {
      $subject = 'Заказ на сайте ';
      $boundary = "--".md5(uniqid(time())); // генерируем разделитель
      $headers = "From: ".$email."\r\n"; 
      $headers .= "MIME-Version: 1.0\r\n";
      $headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
      $multipart = "--".$boundary."\r\n";
      $multipart .= "Content-type: text/plain; charset=\"utf-8\"\r\n";
      $multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
     
      $body = $body."\r\n\r\n";
      $multipart .= $body;
      $file = '';
      if ( !empty( $filepath ) ) {
        $fp = fopen($filepath, "r");
        if ( $fp ) {
          $content = fread($fp, filesize($filepath));
          fclose($fp);
          $file .= "--".$boundary."\r\n";
          $file .= "Content-Type: application/octet-stream\r\n";
          $file .= "Content-Transfer-Encoding: base64\r\n";
          $file .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
          $file .= chunk_split(base64_encode($content))."\r\n";
        }
      }
      //загрузка второго файла
      if ( !empty( $filepath2 ) ) {
        $fp = fopen($filepath2, "r");
        if ( $fp ) {
          $content = fread($fp, filesize($filepath2));
          fclose($fp);
          $file .= "--".$boundary."\r\n";
          $file .= "Content-Type: application/octet-stream\r\n";
          $file .= "Content-Transfer-Encoding: base64\r\n";
          $file .= "Content-Disposition: attachment; filename=\"".$filename2."\"\r\n\r\n";
          $file .= chunk_split(base64_encode($content))."\r\n";
        }
      }
      $multipart .= $file."--".$boundary."--\r\n";
        mail($to, $subject, $multipart, $headers);
    }
    ?>
    </head>
    </body>
 
Назад
Сверху