Обратная связь — PHP+html

[Удален]
1613

Здравствуйте.

Проблема в создании «обратной связи» на сайте, скрипт есть, вроде даже верный, но письма не отправляются на мыло.

Обратка состоит из двух частей — php-файл и форма, что вставляется в html в Вордпрессе.

<?php 

if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=index.html>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}
if (isset ($email))
{
$email = substr($email,0,20); //Не может быть более 20 символов
if (empty($email))
{
echo "<center><b>Не указан e-mail !!!<p>";
echo "<a href=index.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$email = "не указано";
}
if (isset ($mess))
{
$mess = substr($mess,0,1000); //Не может быть более 1000 символов
if (empty($mess))
{
echo "<center><b>Сообщение не написано !!!<p>";
echo "<a href=index.html>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$mess = "не указано";
}
$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Ошибка ! Скрипту не были переданы параметры !";
exit;
}
$to = "mail@site.com";
$subject = "Сообщение с вашего интернет-сайта";
$message = "Имя пославшего:$name::::::::::Электронный адрес:$emaile::::::::::Сообщение:$messe:::::::::IP-адрес:$REMOTE_ADDR";
mail ($to,$subject,$message) or print "Не могу отправить письмо!";
echo "<center><b>Спасибо за отправку вашего сообщения<a href=index.php>Нажмите</a>, что бы вернуться на главную...</center>";
exit;
?>

<form action="mail.php" method="post">

Ваше имя<input type="text" name="name" size="30"><br />
Ваш e-mail<input type="text" name="email" size="30"><br />
Ваше сообщение<textarea name="mess" rows="10" cols="50"></textarea><br />
<input type="submit" value="Отправить сообщение">
</form>

После заполнения формы — перекидывает на php-файл, но тот выдает:

«Не могу отправить письмо! Спасибо за отправку вашего сообщения. Нажмите, что бы вернуться на главную...»

Естественно, на мыло письма не доходят. Подскажите, в чем проблема может быть?

EN
На сайте с 12.01.2011
Offline
1
#1

Что за сервер?

Или просто хостинг?

Тогда чей?

Версия PHP?

http://extractor.name/reger/take.htm (http://extractor.name/reger/take.htm)
M
На сайте с 02.06.2010
Offline
78
#2

попробуй просто отправить, без отправки формы.

допиши в начале файла, для того чтобы увидеть ошибку:

ini_set('display_errors', 'On');

mail("твоя почта, лучше от gmail.com или mail.ru для проверки",

"Сообщение с сайта",

"Текста сообщения",

"From: noreply@domen.ru\r\nContent-Type: text/plain; charset=\"koi8-r\"");

Некоторые почтовые сервисы еще проверяют на наличие почтового ящика, откуда приходит письмо, но не проверяют точно - mail.ru и gmail.com. А если делать рассылки, то лучше создать ящик, с которого ты рассылаешь.

[Удален]
#3

Extractor.name, пользую vps от ihc.

mion, так?

<?php  

ini_set('display_errors', 'On');
mail("bla@blabla.com",
"Сообщение с сайта",
"Текста сообщения",
"From: noreply@domen.ru\r\nContent-Type: text/plain; charset=\"koi8-r\"");
if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=index.html>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}
if (isset ($email))
{
$email = substr($email,0,20); //Не может быть более 20 символов
if (empty($email))
{
echo "<center><b>Не указан e-mail !!!<p>";
echo "<a href=index.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$email = "не указано";
}
if (isset ($mess))
{
$mess = substr($mess,0,1000); //Не может быть более 1000 символов
if (empty($mess))
{
echo "<center><b>Сообщение не написано !!!<p>";
echo "<a href=index.html>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$mess = "не указано";
}
$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Ошибка ! Скрипту не были переданы параметры !";
exit;
}
$to = "mail@site.com";
$subject = "Сообщение с вашего интернет-сайта";
$message = "Имя пославшего:$name::::::::::Электронный адрес:$emaile::::::::::Сообщение:$messe:::::::::IP-адрес:$REMOTE_ADDR";
mail ($to,$subject,$message) or print "Не могу отправить письмо!";
echo "<center><b>Спасибо за отправку вашего сообщения<a href=index.php>Нажмите</a>, что бы вернуться на главную...</center>";
exit;
?>

Ругается: Ошибка ! Скрипту не были переданы параметры !

M
На сайте с 02.06.2010
Offline
78
#4

Мой код нужен для того чтобы определить функция mail() не ругается ли на не открытый порт у твоего хостера.

И про ошибки я имел ввиду, не твои, а которые выдает php.

Попробуй вот так сделать,

<?php  

ini_set('display_errors', 'On');
if (mail("bla@blabla.com",
"Сообщение с сайта",
"Текста сообщения",
"From: noreply@domen.ru\r\nContent-Type: text/plain; charset=\"koi8-r\"")) die("<div>Сообщение отправлено</div>");
else die("<div style='color:red;'>Ошибка при отправке сообщения!!!</div>");

//ниже остальной твой код.
?>

вместо bla@blabla.com, твой реальный email

где, noreply@domen.ru, замени domen.ru на твой реальный домен.

и если выведет "сообщение отправлено":

  • Возможно, у твоего хостера гигантская очередь на отправку писем. И твои письма придут через несколько часов
  • Или твой ip в черном списке у почтовика, которому ты направляешь письмо
  • У твоего хостинга неверно настроен sendmail (или наподобие ему), то что он не доставляет письма. В этом случае, надо писать в тех. поддержку, и жаловаться.

.

Если пишет "Ошибка при отправке сообщения!!!":

  • Значит пиши хостеру, и скажи что тебя не работает функция mail(), они должны исправить

.

Если при выполнении данного скрипта будет какая-либо ошибка, то пиши сюда её.

[Удален]
#5

Пишет: «Ошибка при отправке сообщения!!!»

Я, конечно, отпишу хостеру. Но на хостинге установлены разные cms, они отправляют пользователям различные уведомления и т.п. на мыло. Почему так? Или там используется не функция mail()?

topy
На сайте с 28.03.2006
Offline
142
#6

Добавьте заголовки $header , как тут:

<?php


$Name = "Da Duder"; //senders name
$email = "email@adress.com"; //senders e-mail adress
$recipient = "PersonWhoGetsIt@emailadress.com"; //recipient
$mail_body = "The text for the mail..."; //mail body
$subject = "Subject for reviever"; //subject
$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields

mail($recipient, $subject, $mail_body, $header); //mail command :)
?>
Новости коротко и ясно (https://subnews.ru)
M
На сайте с 02.06.2010
Offline
78
#7

блин, сразу не увидел что у вас vps.

тогда возможно, смысла нет в поддержку писать, т.к. вы сами его администрировать должны.

попробуйте сменить заголовок, как предложил topy.

если не получиться, то есть еще один вариант:

1. Скачать класс PHPMailer (http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php4/0.90/)

2. Подключить сам класс через include или require

require("phpmailer.inc.php");

3. И попробовать выполнить данный код:



$mail = new phpmailer;

$mail->IsSMTP();
$mail->From = "from@email.com";
$mail->FromName = "PHPMailer";
$mail->AddAddress("toemail@email.com", "Василию Пупкину");
$mail->IsHTML(true);
$mail->Subject = "Тема собщения";
$mail->Body = "Текст сообщения";
$mail->Send();

-=Spirit=-
На сайте с 03.02.2008
Offline
144
#8

ТС, почему вы данные через форму по POST передаете, но не юзаете? :)

У вас:

$name, $email, $mess

Нужно:

$_POST["name"], $_POST["email"], $_POST["mess"]
✔ Разработка и доработка сайтов на любых CMS, самописные решения. Опыт более 5 лет. (/ru/forum/863452)
LEOnidUKG
На сайте с 25.11.2006
Offline
1765
#9
Но на хостинге установлены разные cms, они отправляют пользователям различные уведомления

А вы что думали программисты это профессия тяп лям?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
R2
На сайте с 04.03.2009
Offline
15
#10

Я думаю, что всё намного проще. Какая панель стоит? Если ISPManager, то нужно в самом менеджере включить данную функцию, точнее не включить её, а настроить что она должна возвращать. Где точно не помню, но если у вас ISP, то могу посмотреть.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий