|
|
|
| Здравствуйте!
Почему-то не отправляется почта...
<?php
error_reporting(0);
// здесь можете ввести свой ник иадресс по котрому будите получать почту.
define("Maxim", "admin <maxim@tdgong.com>");
// этот адрес може быть использован для доставки почты если первый окажется неработоспособным
define("reserve", "admin <info@tdgong.com>");
// во вкладываемом файле две функции, которые выводят дизайн сайта
// в этих функциях замените html на html дизайна вашего сайта
include("different/design.php");
$error_flag = false;
if (sizeof($HTTP_POST_VARS) >= 4) {
$sender_name = $HTTP_POST_VARS['sender_name'];
$sender_mail = $HTTP_POST_VARS['sender_mail'];
$mail_subject = $HTTP_POST_VARS['mail_subject'];
$mail_body = $HTTP_POST_VARS['mail_body'];
if (strlen($sender_name) < 3 || strlen($sender_name) > 40) {
$error_flag = true;
$error_message = "<p class=\"error\">Введите ваше имя правильно!</p>";
}
elseif (!eregi("^.+@(.+\.)+.+$", $sender_mail) || strlen($sender_mail) < 8 || strlen($sender_mail) > 40) {
$error_flag = true;
$error_message = "<p class=\"error\">Введите ваш e-mail правильно!</p>";
}
elseif (strlen($mail_subject) < 4) {
$error_flag = true;
$error_message = "<p class=\"error\">Вы забыли написать тему сообщения!</p>";
}
elseif (strlen($mail_body) < 4) {
$error_flag = true;
$error_message = "<p class=\"error\">Что вы хотели сообщить?!</p>";
}
$mail_headers = "Return-Path: ".reserve."\n".
"From: ".$sender_name."<".$sender_mail.">\n".
"Reply-To: ".$sender_name."<".$sender_mail.">\n".
"Content-Type: text/plain; charset=windows-1251\n".
"Content-Transfer-Encoding: 8bit\n".
"Date: " . date("r")."\n".
"X-Mailer: mailer_".$SERVER_NAME;
}
head();
if (empty($sender_name) || $error_flag) : print_mail_form();
elseif (mail(TO, $mail_subject, $mail_body, $mail_headers)) :
?>
<table width="70%" border="1" cellspacing="0" cellpadding="8" class="mail_sended">
<caption>Вы успешно отправили следующее письмо:</caption>
<thead></thead>
<tbody>
<tr><td>
<p class="mail_head">Имя отправителя : <?php echo $sender_name;?><br>E-mail отправителя : <?php echo $sender_mail;?><br>Тема сообщения : <?php echo $mail_subject;?><br>
Сообщение :</p>
<p><?php echo nl2br($mail_body);?></p></td></tr>
</tbody>
<tfoot></tfoot>
</table>
<?php else :
echo ("<p>Ваше сообщение не отправлено.<br>Попробуйте еще раз. Или попробуйте в другой раз.</p>");
$error_message = "";
$error_flag = true;
print_mail_form();
endif;
foot();
function print_mail_form() {
global $error_flag, $error_message, $sender_name, $sender_mail, $mail_subject, $mail_body;
if (empty($sender_name)) $sender_name = "";
if (empty($sender_mail)) $sender_mail = "";
if (empty($mail_subject)) $mail_subject = "";
if (empty($mail_body)) $mail_body = "";
?>
<?php if ($error_flag) echo $error_message;?>
<form method="post" name="mail" id="mail">
<table border="0" cellspacing="0" cellpadding="4">
<thead></thead>
<tbody>
<tr><td align="right">Имя : <input type="text" name="sender_name" id="sender_name" value="<? echo htmlspecialchars($sender_name);?>" size="20" maxlength="40"></td>
</tr>
<td align="right">E-mail : <input type="text" name="sender_mail" id="sender_mail" value="<? echo htmlspecialchars($sender_mail);?>" size="20" maxlength="40"></td>
</tr>
<tr><td colspan="2" align="right">Тема сообщения : <input type="text" name="mail_subject" id="mail_subject" value="<? echo htmlspecialchars($mail_subject);?>" size="50"></td></tr>
<tr><td colspan="2" align="right">
<textarea cols="61" rows="11" name="mail_body" id="mail_body" id="mail_body">
<? echo htmlspecialchars($mail_body);?>
</textarea></td></tr>
<tr><td colspan="2" align="right"><p><strong>Необходимо заполнить все поля формы! </strong><input type="submit" value="Отправить"></p></td></tr>
</tbody>
<tfoot></tfoot>
</table>
</form>
<?php }?> | |
|
|
|
|
|
|
|
для: root xx
(21.12.2004 в 09:58)
| | А в какой операционной системе работает скрипт - Windows или UNIX?
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=201 | |
|
|
|
|
|
|
|
для: cheops
(21.12.2004 в 10:22)
| | Я извиняюсь, что не обо всем сразу рассказал (совершенно не было времени).
Работает на UNIX. Причем выдается сообощение о том, что все отправлено успешно, но письмо не попадает в почтовый ящик. | |
|
|
|
|
|
|
|
для: root xx
(21.12.2004 в 12:05)
| | Хм... а ящик какой? на другие пробовали слать, может антиспамовый фильтр душит письма - отправленные при помощи PHP-скрипта письмо - верный кандидат на удаление для многих фильтров, особенно таких которые расположены на почтовых сервисах вроде mail.ru... | |
|
|
|
|
|
|
|
для: cheops
(21.12.2004 в 22:40)
| | Вы наверняка обратили внимание на адрес почты, а соответственно и на сайт: ВСЕ в действии можете глянуть на сайте tdgong.com (в форме для отправки заказа). Что касается фильтра, то не думаю, хотя бы потому, что спама приходит предостаточно). Мне интересно, с точки зрения языка данный скрипт выглядит правильно? Если да, то уж буду думать дальше. Спасибо за ответы. | |
|
|
|
|
|
|
|
для: root xx
(21.12.2004 в 23:04)
| | Хотя пожалуй вот что интересно:
<?php
if (empty($sender_name) || $error_flag) : print_mail_form();
elseif (mail(TO, $mail_subject, $mail_body, $mail_headers)) :
?>
|
В первом параметре стоит константа TO, определения которой не видно... может в этом дело? | |
|
|
|
|
|
|
|
для: cheops
(21.12.2004 в 23:20)
| | Необходимо убрать константу? Я убрал ее, но все то же самое. Быть может это поможет: при проверке сайта на своем компьютере все письма хранятся в директории Z:\tmp\!sendmail\. То есть письмо создается, но получить я его не могу. Фильтрация спама действительно была, я пробовал ее отключать, но результат все тот же. | |
|
|
|
|
|
|
|
для: root xx
(24.12.2004 в 10:14)
| | Нет, насколько я понял, имелось ввиду, что у Вас адрес отправителя (TO) являет собой константу, определения которой в коде нет. Т.е. нет адреса отправителя. Нужно определить константу. Если Вы ее убрали, то надо писать адрес электронной почты как переменную $to, значение которой или определяется раньше в коде или передается из какой-нибудь формы отправки. | |
|
|
|