Показать сообщение отдельно

  #3  
Старый 16.04.2008, 02:37
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме:
16641028

Репутация: 2371


По умолчанию

index.php

PHP код:
<HTML
<
HEAD
<
TITLE>Отправка сообщения с вложением</TITLE
</
HEAD
<
BODY
<
H3> <center><font color=#1E90FF>Отправка сообщения с вложением</font></H3> 
<center
<
table width=1 border=0
<
form action='mail.php' enctype='multipart/form-data' method='post'>
<
tr><td width=50%>To:</td><td align=right><input type=text name=mail_to maxlength=32></td></tr
<
tr><td width=50%>Subject:</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
mail.php

PHP код:
<?php 

  
if(empty($_POST['mail_to'])) exit("Введите адрес получателя"); 

  
// проверяем правильности заполнения с помощью регулярного выражения 

  
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i"$_POST['mail_to'])) exit("Введите адрес в виде somebody@server.com"); 

  
$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 
send_mail($mail_to$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($fpfilesize($path));   

    
fclose($fp);   

    }  

    
$name "file.ext"// в этой переменной надо сформировать имя файла (без всякого пути)  

    
$EOL "\r\n"// ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём

    
$boundary     "--".md5(uniqid(time()));  // любая строка, которой не будет ниже в потоке данных.  

    
$headers    "MIME-Version: 1.0;$EOL";   

    
$headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  

    
$headers   .= "From: address@server.com";  

      

    
$multipart  "--$boundary$EOL";   

    
$multipart .= "Content-Type: text/html; charset=windows-1253$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 { 
//// если письмо отправлено

    
return True;  

    }  

  exit;  

  }

?>
 
Ответить с цитированием