Отправка почты с вложением метод POST и проверкой JS


Отправка почты с прикрепленными файлами и проверкой полей с помощью JS:
 Количества кода очень много, так как  учтены все мелкие ньюансы данной тематики.

HTML — наша форма:

<!--потребуется нам библиотека jquery для проверки валидации полей-->
 <script src="/js/jquery.min.js" type="text/javascript"></script>

 <form action="mailpost.php" id="mailert" enctype="multipart/form-data" method="post"> 

 <input type="hidden" name="mail_to" value='test@mail.ru'><!--кому письмо будет отправлено-->
 <input type="hidden" name="mail_subject" value='тема письма'>
 <div class="otpravkadiv"><center>

Фамилия
<input type="text" id="mail_family" class="otpravka" name="mail_family" maxlength="64" onBlur=proverkafamily("mail_family")><br>
  <!--onBlur - проверка поля сразу как только был потерян фокус -->

Имя <span style="color: #ff0000;">*</span> :<br> 
 <input type="text" id="mail_name" class="otpravka" name="mail_name" maxlength="64" onBlur=proverkaname("mail_name")><br>

Отчество :<br> 
 <input type="text" id="mail_otchestvo" class="otpravka" name="mail_otchestvo" maxlength="64")>
 </center></div>
 <div class="otpravkadiv">
 <center>

E-MAIL <span style="color: #ff0000;">*</span> :<br> 
 <input type="text" id="mail_mail" class="otpravka" name="mail_mail" maxlength="64" onBlur=proverkaemail("mail_mail")>
 <br>

Номер телефона <span style="color: #ff0000;">*</span> :<br>
 <input type="text" id="mail_tel" class="otpravka" name="mail_tel" maxlength="64" onBlur=proverkatel("mail_tel")><br>

Адрес<span style="color: #ff0000;">*</span> :<br>
 <input type="text" id="mail_adress" class="otpravka" name="mail_adress" maxlength="92" onBlur=proverkaaddress("mail_adress")></center></div>
 <div class="otpravkadivarea">
 <center>

Напишите ваши пожелания:</center>
 <textarea cols="50" rows="8" class="otpravkaarea" name="mail_msg"></textarea>

Разрешенные типы файлов: jpg,jpeg,png,pdf,bmp,tiff,cdw,dwg<br>
Максимальный размер файла: 10МБ<br>
Общий объем файлов: 25МБ
</div> 

 <div style="width:440px;">

 <!--Добавляем 8 файлов, у меня добавлены кнопки(добавить input, удалить файл из input-->
 <input type="file" class="printfile" id="mail_print_1" name="mail_print_1">
 <span onclick="dele1();"><i class="fa fa-times fa-2x delknopka"></i>
  
 <input type="file" class="printfile" id="mail_print_2" name="mail_print_2" style="display:none"><span onclick="dele2();"><i class="fa fa-times fa-2x delknopka" id="delkn_2" style="display:none"></i>

 <input type="file" class="printfile" id="mail_print_3" name="mail_print_3" style="display:none"><span onclick="dele3();"><i class="fa fa-times fa-2x delknopka" id="delkn_3" style="display:none"></i>

 <input type="file" class="printfile" id="mail_print_4" name="mail_print_4" style="display:none"><span onclick="dele4();"><i class="fa fa-times fa-2x delknopka" id="delkn_4" style="display:none"></i>

 <input type="file" class="printfile" id="mail_print_5" name="mail_print_5" style="display:none"><span onclick="dele5();"><i class="fa fa-times fa-2x delknopka" id="delkn_5" style="display:none"></i>

 <input type="file" class="printfile" id="mail_print_6" name="mail_print_6" style="display:none"><span onclick="dele6();"><i class="fa fa-times fa-2x delknopka" id="delkn_6" style="display:none"></i>

 <input type="file" class="printfile" id="mail_print_7" name="mail_print_7" style="display:none"><span onclick="dele7();"><i class="fa fa-times fa-2x delknopka" id="delkn_7" style="display:none"></i>

 <input type="file" class="printfile" id="mail_print_8" name="mail_print_8" style="display:none"><span onclick="dele8();"><i class="fa fa-times fa-2x delknopka" id="delkn_8" style="display:none"></i>

 <!--кнопка добавления файлов, точнее input из display:none делаем display:block-->
 <div id="dopf" style="align:left;">
 <button type="button" onclick="inf();">Добавить файл</button>
 </div>  
 </form>


CSS — немного стиля:

.otpravka{
 width:200px;
 font-size:14px;
 font-family:Times New Roman;
 text-align:  center;
 margin-bottom:10px;
 }
 .otpravka:hover{
  border: 1px inset #00CC00;  
  box-shadow: 2px 1px 1px 1px #00CC00;
  padding:2px;
 }
 .otpravkaarea{
 width:383px;
 height:60px;
 font-size:14px;
 font-family:Times New Roman;
 margin-bottom:10px;
 margin-left:7px;
 } 
 .otpravkaarea:hover{
  border: 1px inset #00CC00;  
  box-shadow: 2px 1px 1px 1px #00CC00;
 } 
 .otpravkadiv{
 font-size:16px;
 font-family:Times New Roman;
 width: 220px;
 float:left;
 } .otpravkadivarea{
 font-size:16px;
 font-family:Times New Roman;
 width: 440px;
 float:left;
 } 
 .knopaofor{
 display:none;
 float:right;
 margin-right:10px;
 padding-left:15px;
 width:665px;
 background-color:#fff;
 height:70px;
 } 
 .knopaopl{
 float:left;
 padding:20px 0 20px 150px;
 }
 #formcenter{
 margin-left:17%;
 }
 .alertform{
 display:none; 
 border:2px solid red;
 color:red;
 font-size: 18px;
 font-family: "Times New Roman", "Helvetica Neue Light", 
"Helvetica Neue", "Helvetica", "Arial", "Lucida Grande", sans-serif; 
 font-weight:bold;
 padding:5px 15px;
 margin-bottom:15px;
 margin-left:-55px;
 float:left;
 } 
 .alertsize{
 display:none; 
 border:2px solid red;
 color:red;
 font-size: 18px;
 font-family: "Times New Roman", "Helvetica Neue Light", 
"Helvetica Neue", "Helvetica", "Arial", "Lucida Grande", sans-serif; 
 font-weight:bold;
 padding:5px 15px;
 margin-bottom:15px;
 margin-left:-98px;
 float:left;
 } 
 .printfile{
 border: 1px solid #c7c7c7;
 box-shadow: 2px 2px 8px #f9f9f9 inset;
 border-radius: 2px;
 padding:2px;
 margin:1px;
 }
 .printfile:hover{
 border: 1px inset #00CC00;  
  box-shadow: 2px 1px 1px 1px #00CC00;
  padding:2px;
 } .delknopka{
 color:red;
 }
 .delknopka:hover{
 color:#993300;
 }

 Js проверка полей — теперь смотрим что нам вводят в input:

 //удаление файлов
function dele1(){
 document.getElementById("mail_print_1").value = ''; //удаляем вложеный файл
document.getElementById('mail_print_1').style.border = ''; } // какие либо границы убираем
function dele2(){
 document.getElementById("mail_print_2").value = ''; 
 document.getElementById('mail_print_2').style.border = ''; }
 function dele3(){
 document.getElementById("mail_print_3").value = ''; 
 document.getElementById('mail_print_3').style.border = ''; }
 function dele4(){
 document.getElementById("mail_print_4").value = '';
 document.getElementById('mail_print_4').style.border = '';  }
 function dele5(){
 document.getElementById("mail_print_5").value = '';
 document.getElementById('mail_print_5').style.border = '';  }
 function dele6(){
 document.getElementById("mail_print_6").value = '';
 document.getElementById('mail_print_6').style.border = '';  }
 function dele7(){
 document.getElementById("mail_print_7").value = '';
 document.getElementById('mail_print_7').style.border = '';  }
 function dele8(){
 document.getElementById("mail_print_8").value = '';
 document.getElementById('mail_print_8').style.border = '';  } 

 //проверка вводимых полей

//проверка фамилии
function proverkafamily(objID){ //как только фокус уходит от выбранного input
   if (document.getElementById('mail_family').value == '' || document.getElementById('mail_family').value.length < '2'){
 //выше - если поле пустое или меньше 2-х символов, ниже делаем красную границу
 document.getElementById('mail_family').style.border = '2px solid red';} 
   else {document.getElementById('mail_family').style.border = '';}} //иначе убираем все границы

//проверка имени
function proverkaname(objID){ 
  if (document.getElementById('mail_name').value == '' || document.getElementById('mail_name').value.length < '2'){
  document.getElementById('mail_name').style.border = '2px solid red';} 
  else {document.getElementById('mail_name').style.border = '';}}
  
 //проверка валидности почты
function proverkaemail(objID){ 
  var reg = /^[\w\.\d-_]+@[\w\.\d-_]+\.\w{2,4}$/i;//регулярное выражение
 var malifrom = document.getElementById('mail_mail').value; //получаем значение input
  //делаем проверку введенного input на наличие символов в регулярном выражении
if(reg.test(malifrom) == false) {  
       document.getElementById('mail_mail').style.border = '2px solid red';}//если какого то символа нет то красные границы вокруг поля
  else {document.getElementById('mail_mail').style.border = '';}} 

 //проверка валидности телефонного номера(начинается с цифры, оканчивается цифрой,от 4 до 14 цифр, пробелы, скобки, тире игнорируются)
function proverkatel(objID){ 
  var regtel = /^\d[\d\(\)\ -]{4,14}\d$/;
  var telefon = document.getElementById('mail_tel').value; 
  if(regtel.test(telefon) == false) {  
       document.getElementById('mail_tel').style.border = '2px solid red';}
  else {document.getElementById('mail_tel').style.border = '';}}
  
 //проверка адреса
function proverkaaddress(objID){ 
  if (document.getElementById('mail_adress').value == '' || document.getElementById('mail_adress').value.length < '6'){
  document.getElementById('mail_adress').style.border = '2px solid red';} 
  else {document.getElementById('mail_adress').style.border = '';}}
  
 //добавление и проверка файлов
var n = 2;
 var m= 2;
 function inf(){ //по клике кнопки добавляем поле для файла
  $('#mail_print_'+m+'').fadeIn();//display:block для input  с указанным id
   $('#delkn_'+m+'').fadeIn();//display:block для кнопки - удалить(крестик)
if (n==8){ 
 $('#dopf').fadeOut(); }
 n++;  
 m++; } 

 //проверка вложений input files
 var control = document.getElementById("mail_print_1");
 var control2 = document.getElementById("mail_print_2");
 var control3 = document.getElementById("mail_print_3");
 var control4 = document.getElementById("mail_print_4");
 var control5 = document.getElementById("mail_print_5");
 var control6 = document.getElementById("mail_print_6");
 var control7 = document.getElementById("mail_print_7");
 var control8 = document.getElementById("mail_print_8"); var sizea_1=sizea_2=sizea_3=sizea_4=sizea_5=sizea_6=sizea_7=sizea_8=''; 

 //при изменении input file
 control.addEventListener("change", function(event) {
     var s = 0,
         files = control.files,
         len = files.length;
     for (; s < len; s++) {
   var provf = files[s].name;
   var re = /\.png$|.jpg$|.jpeg$|.pdf$|.bmp$|.tiff$|.cdw$|.dwg$/i; 
 //re - регулярное выражение, присутствие в конце имени файла (расширение файла) такое то значение, любое из значений выше, i - регистр не учитывается
 
 //ниже повторяющиеся проверки, правильнее было бы сделать циклом...
if (re.test(provf) && files[s].size<10485760){
 //выше проверка на размер файла в байтах (10 МБайт в данном случае)
   document.getElementById('mail_print_1').style.border = '';
   sizea_1=files[s].size; }
  else {
  document.getElementById('mail_print_1').style.border = '2px solid red';}
 }}, false); 

 //проверка второго файла и т.д
control2.addEventListener("change", function(event) {
     var s = 0,
         files = control2.files,
         len = files.length;
     for (; s < len; s++) {
   var provf = files[s].name;
   var re = /\.png$|.jpg$|.jpeg$|.pdf$|.bmp$|.tiff$|.cdw$|.dwg$/i;  
if (re.test(provf) && files[s].size<10485760){
  document.getElementById('mail_print_2').style.border = '';
  sizea_2=files[s].size; }
  else {
  document.getElementById('mail_print_2').style.border = '2px solid red';}
 }}, false); 

control3.addEventListener("change", function(event) {
     var s = 0,
         files = control3.files,
         len = files.length;
     for (; s < len; s++) {
   var provf = files[s].name;
   var re = /\.png$|.jpg$|.jpeg$|.pdf$|.bmp$|.tiff$|.cdw$|.dwg$/i;  
 if (re.test(provf) && files[s].size<10485760){
  document.getElementById('mail_print_3').style.border = '';
  sizea_3=files[s].size;}
  else {
  document.getElementById('mail_print_3').style.border = '2px solid red';}
 }}, false); 

control4.addEventListener("change", function(event) {
     var s = 0,
         files = control4.files,
         len = files.length;
     for (; s < len; s++) {
   var provf = files[s].name;
   var re = /\.png$|.jpg$|.jpeg$|.pdf$|.bmp$|.tiff$|.cdw$|.dwg$/i;  
 if (re.test(provf) && files[s].size<10485760){
  document.getElementById('mail_print_4').style.border = '';
  sizea_4=files[s].size;}
  else {
  document.getElementById('mail_print_4').style.border = '2px solid red';}
 }}, false); 

control5.addEventListener("change", function(event) {
     var s = 0,
         files = control5.files,
         len = files.length;
     for (; s < len; s++) {
   var provf = files[s].name;
   var re = /\.png$|.jpg$|.jpeg$|.pdf$|.bmp$|.tiff$|.cdw$|.dwg$/i;  
 if (re.test(provf) && files[s].size<10485760){
  document.getElementById('mail_print_5').style.border = '';
  sizea_5=files[s].size;}
  else {
  document.getElementById('mail_print_5').style.border = '2px solid red';}
 }}, false); 

control6.addEventListener("change", function(event) {
     var s = 0,
         files = control6.files,
         len = files.length;
     for (; s < len; s++) {
   var provf = files[s].name;
   var re = /\.png$|.jpg$|.jpeg$|.pdf$|.bmp$|.tiff$|.cdw$|.dwg$/i;  
 if (re.test(provf) && files[s].size<10485760){
  document.getElementById('mail_print_6').style.border = '';
  sizea_6=files[s].size;}
  else {
  document.getElementById('mail_print_6').style.border = '2px solid red';}
 }}, false); 

control7.addEventListener("change", function(event) {
     var s = 0,
         files = control7.files,
         len = files.length;
     for (; s < len; s++) {
   var provf = files[s].name;
   var re = /\.png$|.jpg$|.jpeg$|.pdf$|.bmp$|.tiff$|.cdw$|.dwg$/i;  
 if (re.test(provf) && files[s].size<10485760){
  document.getElementById('mail_print_7').style.border = '';
  sizea_7=files[s].size;}
  else {
  document.getElementById('mail_print_7').style.border = '2px solid red';}
 }}, false); 

control8.addEventListener("change", function(event) {
    var s = 0,
         files = control8.files,
         len = files.length;
     for (; s < len; s++) {
   var provf = files[s].name;
   var re = /\.png$|.jpg$|.jpeg$|.pdf$|.bmp$|.tiff$|.cdw$|.dwg$/i;  
 if (re.test(provf) && files[s].size<10485760){
  document.getElementById('mail_print_8').style.border = '';
  sizea_8=files[s].size;}
  else {
  document.getElementById('mail_print_8').style.border = '2px solid red';}
 }}, false);

 //снова проверка всех полей + отправка формы
//похоже на проверки выше только эта проверка при нажатии кнопки "отправить"
function sendwpccviz(){
 var reg = /^[\w\.\d-_]+@[\w\.\d-_]+\.\w{2,4}$/i;
 var malifrom = document.getElementById('mail_mail').value;
 var regtel = /^\d[\d\(\)\ -]{4,14}\d$/;
 var telefon = document.getElementById('mail_tel').value;

 //тут отдельно на каждый input высвечиваетюся красные границы(border)  
   if (document.getElementById('mail_family').value == '' || document.getElementById('mail_family').value.length < '2'){
   $('.alertform').fadeIn();//display:block - div с предупреждающим текстом
   document.getElementById('mail_family').style.border = '3px solid red';
  }   

if(document.getElementById('mail_name').value == '' || document.getElementById('mail_name').value.length < '2'){
   $('.alertform').fadeIn();
   document.getElementById('mail_name').style.border = '3px solid red';
  }  

if(reg.test(malifrom) == false) {  
   $('.alertform').fadeIn();
  document.getElementById('mail_mail').style.border = '3px solid red';
  }  

 if(regtel.test(telefon) == false) { 
   $('.alertform').fadeIn();
   document.getElementById('mail_tel').style.border = '3px solid red';
  }   

if (document.getElementById('mail_adress').value == '' || document.getElementById('mail_adress').value.length < '6'){
   $('.alertform').fadeIn();
   document.getElementById('mail_adress').style.border = '3px solid red';
  }

 //манипуляция с нашими файлами
//тут опять же стоило циклом сделать )
// если границы красного цвета то делаем их еще краснее )
   if (document.getElementById('mail_print_1').style.border == '2px solid red'){
  document.getElementById('mail_print_1').style.border = '3px solid red';
  }

  if (document.getElementById('mail_print_2').style.border == '2px solid red'){
  document.getElementById('mail_print_2').style.border = '3px solid red';
  }

  if (document.getElementById('mail_print_3').style.border == '2px solid red'){
  document.getElementById('mail_print_3').style.border = '3px solid red';
  }

  if (document.getElementById('mail_print_4').style.border == '2px solid red'){
  document.getElementById('mail_print_4').style.border = '3px solid red';
  } 

 if (document.getElementById('mail_print_5').style.border == '2px solid red'){
  document.getElementById('mail_print_5').style.border = '3px solid red';
  } 

 if (document.getElementById('mail_print_6').style.border == '2px solid red'){
  document.getElementById('mail_print_6').style.border = '3px solid red';
  }

  if (document.getElementById('mail_print_7').style.border == '2px solid red'){
  document.getElementById('mail_print_7').style.border = '3px solid red';
  } 

if (document.getElementById('mail_print_8').style.border == '2px solid red'){
  document.getElementById('mail_print_8').style.border = '3px solid red';
  } 

 //проверка на общий объем (больше 25 МБ)
if (sizea_1+sizea_2+sizea_3+sizea_4+sizea_5+sizea_6+sizea_7+sizea_8>26214400){
  $('.alertsize').fadeIn();;
  } 

 if (sizea_1+sizea_2+sizea_3+sizea_4+sizea_5+sizea_6+sizea_7+sizea_8<26214400){
  $('.alertsize').fadeOut();;
  }
  
 //похоже немного спорная конечная отправка формы
//работает потому что раньше стоит проверка на пустоты в input и т.д.
   if (document.getElementById('mail_family').style.border == '' &&
   document.getElementById('mail_name').style.border == '' &&
   document.getElementById('mail_mail').style.border == '' &&
   document.getElementById('mail_tel').style.border == '' &&
   document.getElementById('mail_adress').style.border == '' &&
   document.getElementById('mail_print_1').style.border == '' &&
   document.getElementById('mail_print_2').style.border == '' &&
   document.getElementById('mail_print_3').style.border == '' &&
   document.getElementById('mail_print_4').style.border == '' &&
   document.getElementById('mail_print_5').style.border == '' &&
   document.getElementById('mail_print_6').style.border == '' &&
   document.getElementById('mail_print_7').style.border == '' &&
   document.getElementById('mail_print_8').style.border == '' &&
   sizea_1+sizea_2+sizea_3+sizea_4+sizea_5+sizea_6+sizea_7+sizea_8<= 26214400)
   {document.forms["mailert"].submit();}   
 }

Конечный PHP (mailpost.php):

<?php
 //упорно обходим циклы (что не очень хорошо)
 //получаем наши файлы
for ($q=1;$q<=8;$q++)
 {${"filepath_" . $q }='';}
 for ($k=1;$k<=8;$k++)
 {${"filename_" . $k }='';}  

//если файл не пустой
if (!empty($_FILES['mail_print_1']['tmp_name'])) { 
  $filepath_1 = $_FILES['mail_print_1']['tmp_name'];
     $filename_1 = $_FILES['mail_print_1']['name']; } 

 if (!empty($_FILES['mail_print_2']['tmp_name'])) { 
  $filepath_2 = $_FILES['mail_print_2']['tmp_name'];
     $filename_2 = $_FILES['mail_print_2']['name']; } 
  if (!empty($_FILES['mail_print_3']['tmp_name'])) { 
  $filepath_3 = $_FILES['mail_print_3']['tmp_name'];
     $filename_3 = $_FILES['mail_print_3']['name']; } 
  if (!empty($_FILES['mail_print_4']['tmp_name'])) { 
  $filepath_4 = $_FILES['mail_print_4']['tmp_name'];
     $filename_4 = $_FILES['mail_print_4']['name']; } 
  if (!empty($_FILES['mail_print_5']['tmp_name'])) { 
  $filepath_5 = $_FILES['mail_print_5']['tmp_name'];
     $filename_5 = $_FILES['mail_print_5']['name']; }  
  if (!empty($_FILES['mail_print_6']['tmp_name'])) { 
  $filepath_6 = $_FILES['mail_print_6']['tmp_name'];
     $filename_6 = $_FILES['mail_print_6']['name']; } 
  if (!empty($_FILES['mail_print_7']['tmp_name'])) { 
  $filepath_7 = $_FILES['mail_print_7']['tmp_name'];
     $filename_7 = $_FILES['mail_print_7']['name']; } 
  if (!empty($_FILES['mail_print_8']['tmp_name'])) { 
  $filepath_8 = $_FILES['mail_print_8']['tmp_name'];
     $filename_8 = $_FILES['mail_print_8']['name']; }

 $mail_to = $_POST['mail_to'];//почтовый адрес - куда отправляем
  $thm = $_POST['mail_subject'];//тема письма
 
   $clmail = $_POST['mail_mail'];//почта, заполневшего форму
//получаем поля из формы
   $cltel = $_POST['mail_tel']; //телефона
  $family = $_POST['mail_family'];
   $namezak = $_POST['mail_name'];
   $otchestvo = $_POST['mail_otchestvo'];
   $adress = $_POST['mail_adress'];
   $msg = $_POST['mail_msg'];//сообщение

//формируем тело письма
$telo = "Почтовый адрес отправителя: ".$clmail."<br>"."<br>".
"Номер телефона : ".$cltel."<br>"."<br>"."Фмилия Имя Отчество: ".
"<br>".$family." ".$namezak." ".$otchestvo."<br>"."<br>".
"Адресс: "."<br>".$adress."<br>"."<br>".
"Сообщение : "."<br>".$msg."<br>";

 //функция отправки
send_mail($mail_to, $thm, $telo, $filepath_1, $filename_1, $filepath_2, $filename_2, $filepath_3, $filename_3, $filepath_4, $filename_4, $filepath_5, $filename_5, $filepath_6, $filename_6, $filepath_7, $filename_7, $filepath_8, $filename_8,); 
function send_mail($mail_to, $thema, $html, $filepath_1, $filename_1, $filepath_2, $filename_2, $filepath_3, $filename_3, $filepath_4, $filename_4, $filepath_5, $filename_5) 
 { 
 $EOL = "\r\n"; 
      $boundary     = "--".md5(uniqid(time()));  
     $headers    = "MIME-Version: 1.0;$EOL";   
     $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
     $headers   .= "From: a-print.server";      
     $multipart  = "--$boundary$EOL";   
     $multipart .= "Content-Type: text/html; charset=UTF-8$EOL";   
     $multipart .= "Content-Transfer-Encoding: base64$EOL";   
     $multipart .= $EOL; 
     $multipart .= chunk_split(base64_encode($html));  
     $file = '';

 //далее смотрим есть ли файл
 if ( !empty( $filepath_1 ) ) {
     $fp = fopen($filepath_1, "r"); 
 if ( $fp ) { 
       $content = fread($fp, filesize($filepath_1)); 
       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_1."\"\r\n\r\n"; 
       $file .= chunk_split(base64_encode($content))."\r\n";  }} 

if ( !empty( $filepath_2 ) ) {
     $fp = fopen($filepath_2, "r"); 
     if ( $fp ) { 
       $content = fread($fp, filesize($filepath_2)); 
       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_2."\"\r\n\r\n"; 
       $file .= chunk_split(base64_encode($content))."\r\n";  }}   
    
    if ( !empty( $filepath_3 ) ) {
     $fp = fopen($filepath_3, "r"); 
     if ( $fp ) { 
       $content = fread($fp, filesize($filepath_2)); 
       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_3."\"\r\n\r\n"; 
       $file .= chunk_split(base64_encode($content))."\r\n";  }} 
    
   if ( !empty( $filepath_4 ) ) {
     $fp = fopen($filepath_4, "r"); 
     if ( $fp ) { 
       $content = fread($fp, filesize($filepath_4)); 
       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_4."\"\r\n\r\n"; 
       $file .= chunk_split(base64_encode($content))."\r\n";  }} 
    
   if ( !empty( $filepath_5 ) ) {
     $fp = fopen($filepath_5, "r"); 
     if ( $fp ) { 
       $content = fread($fp, filesize($filepath_5)); 
       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_5."\"\r\n\r\n"; 
       $file .= chunk_split(base64_encode($content))."\r\n";  }}    

  //в общем суть присоединения файлов понятна 
   $multipart .= $file."--".$boundary."--\r\n";       
 if(!mail($mail_to, $thema, $multipart, $headers))   
          {return False;   
       }  
     else { 
     return True;  
     }  
   exit;  
   }  
 ?> 


Оставить комментарий