Страница 1 из 1

отправка почтового сообщения с веб-страници

Добавлено: 2007-07-11 14:13:58
bonh
Ситуация следующая: с веб страници нужно отправлять почту вставляю туды скрипт php что то типа такого:

Код: Выделить всё

<?php 
function show_form() 
{ 
?> 
<form action="" method=post> 
<div align="center"> 
<br />Имя*<br /> 
<input type="text" name="name" size="40"> 
<br />Фамилия*<br /> 
<input type="text" name="naml" size="40"> 
<br />Паспорт*<br /> 
<input type="text" name="namek" size="40"> 
<br />Страна*<br /> 
<input type="text" name="namep" size="40"> 
<br />Контактный телефон<br /> 
<input type="text" name="tel" size="40"> 
<br />Контактный email*<br /> 
<input type="text" name="email" size="40"> 
<br />Teма<br /> 
<input type="text" name="title" size="40"> 
<br />Сообщение*<br /> 
<textarea rows="10" name="mess" cols="30"></textarea> 
<br /><input type="submit" value="Отправить" name="submit"> 
</div> 
</form> 
* Помечены поля, которые необходимо заполнить 
<? 
} 

function complete_mail() { 
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично 
$_POST['title'] = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000); 
$_POST['mess'] = substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000); 
$_POST['name'] = substr(htmlspecialchars(trim($_POST['name'])), 0, 30); 
$_POST['namel'] = substr(htmlspecialchars(trim($_POST['namel'])), 0, 30); 
$_POST['namek'] = substr(htmlspecialchars(trim($_POST['namek'])), 0, 30); 
$_POST['namep'] = substr(htmlspecialchars(trim($_POST['namep'])), 0, 30); 

$_POST['tel'] = substr(htmlspecialchars(trim($_POST['tel'])), 0, 30); 
$_POST['email'] = substr(htmlspecialchars(trim($_POST['email'])), 0, 50); 
// если не заполнено поле "Имя" - показываем ошибку 0 
if (empty($_POST['name'])) 
output_err(0); 
// если не заполнено поле "Имя" - показываем ошибку 1 
if (empty($_POST['namel'])) 
output_err(1); 
// если не заполнено поле "Имя" - показываем ошибку 2 
if (empty($_POST['namek'])) 
output_err(2); 
// если не заполнено поле "Имя" - показываем ошибку 3 
if (empty($_POST['namep'])) 
output_err(3); 

// если неправильно заполнено поле email - показываем ошибку 4 
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email'])) 
output_err(4); 
// если не заполнено поле "Сообщение" - показываем ошибку 5 
if(empty($_POST['mess'])) 
output_err(5); 
// создаем наше сообщение 
$mess = ' 
Имя отправителя:'.$_POST['name'].' 
Фамилия:'.$_POST['namel'].' 
Паспорт:'.$_POST['namek'].' 
Страна:'.$_POST['namep'].' 
Контактный телефон:'.$_POST['tel'].' 
Контактный email:'.$_POST['email'].' 
'.$_POST['mess']; 
// $to - кому отправляем 
$to = 'test@test.ru'; 
// $from - от кого 
$from='test@test.ru'; 
mail($to, $_POST['title'], $mess, "From:".$from); 
echo 'Спасибо! Ваше письмо отправлено.'; 
} 

function output_err($num) 
{ 
$err[0] = 'ОШИБКА! Не введено имя.'; 
$err[1] = 'ОШИБКА! Неверно введен фамилия.'; 
$err[2] = 'ОШИБКА! Неверно введен паспорт.'; 
$err[3] = 'ОШИБКА! Неверно введен страна.'; 
$err[4] = 'ОШИБКА! Неверно введен e-mail.'; 

$err[5] = 'ОШИБКА! Не введено сообщение.'; 
echo '<p>'.$err[$num].'</p>'; 
show_form(); 
exit(); 
} 

if (!empty($_POST['submit'])) complete_mail(); 
else show_form(); 
?>
Вопрос в следующем : Что нужно дополнительно на сервере сделать что бы это всё заработало (с apaxhe'm, нужен ли на серве MDA, да и вообще что делать :?: ) :oops:
Конфига сервы: FreeBSD 6.2 + apach 1.3(В настройках апача практически нечего не менял)

Добавлено: 2007-07-11 15:33:29
schizoid
ну по идее почтовик+домен нуно иметь