Пример: Написать программу, которая производит рассылку с вложенными файлами на несколько email адресов. Адреса вводятся на форме через запятую.
 
Текст программы:
<HTML> 
<HEAD> 
<TITLE>Отправка  сообщения с вложением</TITLE> 
</HEAD> 
<BODY> 
<H3>  <center><font color="#1E90FF">Отправка сообщения с  вложением</font></H3> 
<center> 
<table width="1" border="0"> 
<form action="132.php"  enctype="multipart/form-data" method="post"> 
<tr><td width="50%">Кому:</td><td  align="right"><input type="text"  name="mail_to" maxlength="150"></td></tr> 
<tr><td width="50%">Тема:</td><td  align="right"><input type="text"  name="mail_subject"  maxlength="64"></td></tr> 
<tr><td colspan="2">Сообщение:<br><textarea cols="50"  rows="8" name="mail_msg"></textarea></td> 
<tr><td  width="50%">Photo:</td><td  align="right"><input type="file" name="mail_file"  maxlength="64"></td></tr> 
</tr><tr><td  colspan="2"><input type="submit" value="Отправить"></td></tr> 
</form> 
</table> 
</center> 
</BODY> 
</HTML> 
 
 
Текст обработки формы:
<?php 
  if(empty($_POST['mail_to'])) exit("Введите  адрес получателя"); 
  // проверяем правильности заполнения с  помощью регулярного выражения 
  $picture = ""; 
  // Если поле выбора вложения не пустое -  закачиваем его на сервер 
  if (!empty($_FILES['mail_file']['tmp_name'])) 
  { 
  // Закачиваем файл 
  $path =  $_FILES['mail_file']['name']; 
  if  (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = "$path";
  } 
  $thm =  $_POST['mail_subject'];
  $msg =  $_POST['mail_msg'];
  $mail_to =  $_POST['mail_to'];
  // Отправляем почтовое сообщение 
  if(empty($picture)) mail($mail_to, $thm, $msg); 
  else {
  $mail  = split (",", $mail_to);
  for($i=0;  $i<count($mail); $i++){
  echo  "$i) ".$mail[$i]."<br>";             
  if  (!preg_match("/^(?:[a-z0-9]+(?:[-_]?[a-z0-9]+)?@[a-z0-9]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i",trim($mail[$i])))  exit("Введите адрес в виде somebody@server.com"); 
  send_mail($mail[$i], $thm, $msg, $picture); 
  }
  }
  // Вспомогательная функция для отправки  почтового сообщения с вложением (Trianon)
  function send_mail($mail_to, $thema, $html, $path)   
  { 
  if ($path)  {  
  $fp =  fopen($path,"rb");   
  if  (!$fp)   
  { print "Cannot open file";   
  exit();   
  }   
  $file  = fread($fp, filesize($path));   
  fclose($fp);   
}  
 
    $name = $path; // в этой переменной надо  сформировать имя файла (без всякого пути)  
  $EOL = "\r\n"; // ограничитель  строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
  $boundary     = "--".md5(uniqid(time()));  // любая строка, которой не будет ниже в  потоке данных.  
  $headers    = "MIME-Version:  1.0;$EOL";
  $headers   .= "Content-Type:  multipart/mixed; boundary=\"$boundary\"$EOL";  
  $headers   .= "From:  my@mail.ru";
  
  $multipart  =  "--$boundary$EOL";   
  $multipart  .= "Content-Type: text/html; charset=windows-1251$EOL";   
  $multipart  .= "Content-Transfer-Encoding: base64$EOL";   
  $multipart  .= $EOL; // раздел между заголовками и телом html-части 
  $multipart .= chunk_split(base64_encode($html));
    $multipart  .=  "$EOL--$boundary$EOL";
  $multipart  .= "Content-Type: application/octet-stream;  name=\"$name\"$EOL";   
  $multipart  .= "Content-Transfer-Encoding: base64$EOL";
  $multipart  .= "Content-Disposition: attachment;  filename=\"$name\"$EOL";   
  $multipart  .= $EOL; // раздел между заголовками и телом прикрепленного файла 
  $multipart .= chunk_split(base64_encode($file));   
    $multipart  .= "$EOL--$boundary--$EOL";   
  
  if(!mail($mail_to, $thema, $multipart, $headers))   
  {return  False;           //если не письмо не  отправлено
  }
  else { //// если письмо отправлено
  echo "<p> Письмо  отправлено!!!</p>";
  return True;  
  }
  exit;
  }
  ?>
 
 
  Результат  роботи програми:
 
 
 
 
