Тоже самое, но с проверкой e-mail-ов:<?
//Функция проверки переменной
function html_filter($str) {
$result = HTMLSpecialChars($str);
return $result;}
//Функция проверки e-mail
function isEmail($email){
if (eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]+$", $email)){return TRUE;}else{return FALSE;}}
//Функция отправки письма с аттачем
function XMail($from, $to, $subj, $text, $filename, $file)
{
$text = str_replace("\n", "<br>\n", $text);
$f = fopen($file,"rb");
$un = strtoupper(uniqid(time()));
$head = "From: $from\n";
$head .= "To: $to\n";
$head .= "Subject: $subj\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: $from\n";
$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type:multipart/mixed;";
$head .= "boundary=\"----------".$un."\"\n\n";
$zag = "------------".$un."\nContent-Type:text/html;\n";
$zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
$zag .= "------------".$un."\n";
$zag .= "Content-Type: application/octet-stream;";
$zag .= "name=\"".basename($filename)."\"\n";
$zag .= "Content-Transfer-Encoding:base64\n";
$zag .= "Content-Disposition:attachment;";
$zag .= "filename=\"".basename($filename)."\"\n\n";
$zag .= chunk_split(base64_encode(fread($f,filesize($file))))."\n";
if (!@mail("$to", "$subj", $zag, $head))
return 0;
else
return 1;
}
//Функция отправки письма без аттача
function EMail($from, $to, $subj, $text)
{
$text = str_replace("\n", "<br>\n", $text);
$un = strtoupper(uniqid(time()));
$head = "From: $from\n";
$head .= "To: $to\n";
$head .= "Subject: $subj\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: $from\n";
$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type:multipart/mixed;";
$head .= "boundary=\"----------".$un."\"\n\n";
$zag = "------------".$un."\nContent-Type:text/html;\n";
$zag .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
$zag .= "------------".$un."\n";
if (!@mail("$to", "$subj", $zag, $head))
return 0;
else
return 1;
}
//Получаем данные из формы
if(isset($submit)):
//Проверяем полученные из формы данные
$from = trim(html_filter($from));
$to = trim(html_filter($to));
$subj = trim(html_filter($subj));
$text = trim(html_filter($text));
$filename = trim(html_filter($file_name));
//Проверяем e-mail-ы
if(isEmail($from)==false){$from_error=1;}
if(isEmail($to)==false){$to_error=1;}
if($from_error!=1 and $to_error!=1):
//Если прикреплен файл
if($filename!="" and $file_size>0):
if(XMail($from, $to, $subj, $text, $filename, $file)==1){header("Location:?send=ok");}
endif;
//Если Не прикреплен файл
if($filename=="" or $file_size==0):
if(EMail($from, $to, $subj, $text)==1){header("Location:?send=ok");}
endif;
endif;
endif;
?>
<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Отправка письма с аттачем и без</title>
</head>
<body>
<?//Печатаем ошибки
if(isset($submit)):
if($from_error==1):?>
<font color="red">E-mail в поле From введен неправильно!</font><br>
<?endif;?>
<?if($to_error==1):?>
<font color="red">E-mail в поле To введен неправильно!</font><br>
<?endif;?>
<?endif;?>
<?if($send=="ok"):?><font color="green">Сообщение отправлено</font><br><br><?endif;?>
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
From:<br> <input type="text" name="from" value="<?=$from?>"><br>
To:<br> <input type="text" name="to" value="<?=$to?>"><br>
Subject:<br> <input type="text" name="subj" value="<?=$subj?>"><br>
Text:<br><textarea cols="40" rows="10" name="text"><?=$text?></textarea><br>
File:<br> <input type="file" name="file"><br>
<input type="submit" name="submit" value="Отправить">
</form>
</body>
</html>
</body>
</html>