Jump to content
  • 0

Скрипт отправки сообщений с сайта


Alfa2015
 Share

Question

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

Подскажите, ну как,наконец, отправить сообщение с сайта? Я имею в виду скрипт, ну не один не работает у меня.(((((

 

Код:

<form id="MyForm" action="mail.php" method="post"> 					<input type="text" name="name" placeholder="Как Вас зовут?">  					<input type="email" name="email" placeholder="Ваш e-mail">					<textarea cols="20" rows="7" name="body" placeholder="Напишите сообщение" required></textarea> 					<input type="submit" value="Отправить" /> 				</form>

А вот и сам скрипт (этот скрипт я скопировала в файл mail.php

<?phpif (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}} if (isset($name) && isset($email) && isset($sub) && isset($body)){ $address = "mailles@bk.ru";$mes = "Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body";$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");if ($send == 'true'){echo "Сообщение отправлено, через 5 секунд Вы будете направлены на главную страницу";}else {echo "Ошибка, сообщение не отправлено!";} }else{echo "Вы заполнили не все поля, необходимо вернуться назад!";}?>

Заполняю все поля, а мне постоянно пишет : "Вы заполнили не все поля, необходимо вернуться назад!"

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0
<input type="submit" value="Отправить" /> - тут не хватает name="sub"if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}} - эта строчка в таком случае просто не нужна&& isset($sub) - и это тоже не нужно$send = mail ($address,$sub, - и тут $sub тоже не нужен

переменную $sub лучше использовать так:

<?phpif(isset($_POST['sub'])) {далее весь ваш код}?>

а вообще, этот код не очень...

Link to comment
Share on other sites

  • 0

попробуйте вот такой вариант:

<?$name = $_POST['name'];$email = $_POST['email'];$body = $_POST['body'];$date = date("Y-m-d H:i:s");if(empty($name) or strlen($name) < 5) {	$error1 = 'Значение поля «Имя» не должно быть менее 5 символов!';} else $error1 = NULL;if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {	$error2 = 'Значение поля «E-mail» содержит неверный формат электронной почты!';} else $error2 = NULL;if(empty($error1) && empty($error2)) {	$message .= '	<table>		<tr>			<td><strong>Дата заявки:</strong></td>			<td><font color="#980000">'.$date.'</font></td>		</tr>		<tr>			<td><strong>Имя:</strong></td>			<td><font color="#980000">'.$name.'</font></td>		</tr>		<tr>			<td><strong>Email:</strong></td>			<td><font color="#980000">'.$email.'</font></td>		</tr>        <tr>            <td><strong>Текст сообщения:</strong></td>            <td><font color="#980000">'.$body.'</font></td>        </tr>	</table>';	$to = '<mailles@bk.ru>';	$subject = 'Заявка с сайта '.$_SERVER['HTTP_HOST'].'';	$headers  = 'MIME-Version: 1.0' . "\r\n";	$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";	//$headers .= 'To: <'.$email.'>' . "\r\n"; - отослать письмо заявителю	//$headers .= 'From: <info@'.$_SERVER['HTTP_HOST'].'>' . "\r\n"; - с какого ящика сайта отправлено	//$headers .= 'Cc: test@test.ru' . "\r\n"; - копия	//$headers .= 'Bcc: test@test.ru' . "\r\n"; - скрытая копия	if (mail($to, $subject, $message, $headers)) {		echo '			<div class="true">				Уважаемый клиент , благодарим Вас за заявку.<br>				Все заявки обрабатываются в течение часа.<br>			</div>';	} else echo '<span class="error">Ошибка отправки!</span>';} else {		echo '		<div class="result">			<p>'.$error1.'</p>			<p>'.$error2.'</p>		</div>';}?>
Link to comment
Share on other sites

  • 0

Попробовала.

<form id="MyForm" action="mail.php" method="post"> <input type="text" name="name" placeholder="Как Вас зовут?">  <input type="email" name="email" placeholder="Ваш e-mail"><textarea cols="20" rows="7" name="body" placeholder="Напишите сообщение" required></textarea> <input type="submit" name="sub" value="Отправить" /> </form>

а в mail.php скопировала код, который вы привели выше:

 

 

В этой строчке написала свой ящик:

$to = '<mailles@bk.ru>';

Результат: Не работает. Пишет: "Ошибка отправки!"

Link to comment
Share on other sites

  • 0

эта ошибка говорит о том, что ф-ция mail не отработала, а значит  что-то не так на стороне сервера. пишите в т.п. хостинга.


Может ящик без "<" и ">"?

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


долго бы юзер ждал когда его перенаправят на главную :D

if ($send == 'true'){echo "Сообщение отправлено, через 5 секунд Вы будете направлены на главную страницу";}else {echo "Ошибка, сообщение не отправлено!";}
Link to comment
Share on other sites

  • 0
долго бы юзер ждал когда его перенаправят на главную

 

Если что, это делается так:

header("refresh:5;url=/"); 
да не, тут вообще проблем не должно быть, в заголовках же такое приходит на почту именно в таком виде.
 

Хм, вот например мне письма приходят с таким заголовком:

To: afdw <afdw@yandex.ru>

И, судя по документации, тут два варианта:

1. e@mail2. name <e@mail>

Но чтобы

<e@mail>

я никогда не видел.

Edited by afdw
Link to comment
Share on other sites

  • 0

Делаю так:

<form id="my-form" action="mail.php" method="post"> <input type="text" name="name" placeholder="Как Вас зовут?">  <input type="email" name="email" placeholder="Ваш e-mail"><textarea cols="20" rows="7" name="body" placeholder="Напишите сообщение"></textarea> <input type="submit" name="sub" value="Отправить" /> </form>

В файле mail.php пишу:

<?$name = $_POST['name'];$email = $_POST['email'];$body = $_POST['body'];$date = date("Y-m-d H:i:s");if(empty($name) or strlen($name) < 5) {	$error1 = 'Значение поля «Имя» не должно быть менее 5 символов!';} else $error1 = NULL;if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {	$error2 = 'Значение поля «E-mail» содержит неверный формат электронной почты!';} else $error2 = NULL;if(empty($error1) && empty($error2)) {	$message .= '	<table>		<tr>			<td><strong>Дата заявки:</strong></td>			<td><font color="#980000">'.$date.'</font></td>		</tr>		<tr>			<td><strong>Имя:</strong></td>			<td><font color="#980000">'.$name.'</font></td>		</tr>		<tr>			<td><strong>Email:</strong></td>			<td><font color="#980000">'.$email.'</font></td>		</tr>        <tr>            <td><strong>Текст сообщения:</strong></td>            <td><font color="#980000">'.$body.'</font></td>        </tr>	</table>';	$to = '<здесь пишу мою почту@bk.ru>';	$subject = 'Заявка с сайта '.$_SERVER['HTTP_HOST'].'';	$headers  = 'MIME-Version: 1.0' . "\r\n";	$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";	//$headers .= 'To: <'.$email.'>' . "\r\n"; - отослать письмо заявителю	//$headers .= 'From: <info@'.$_SERVER['HTTP_HOST'].'>' . "\r\n"; - с какого ящика сайта отправлено	//$headers .= 'Cc: test@test.ru' . "\r\n"; - копия	//$headers .= 'Bcc: test@test.ru' . "\r\n"; - скрытая копия	if (mail($to, $subject, $message, $headers)) {		echo '			<div class="true">				Уважаемый клиент , благодарим Вас за заявку.<br>				Все заявки обрабатываются в течение часа.<br>			</div>';	} else echo '<span class="error">Ошибка отправки!</span>';} else {		echo '		<div class="result">			<p>'.$error1.'</p>			<p>'.$error2.'</p>		</div>';}?>

Где ошибка?


обратитесь в т.п. хостинга, спросите почему не отрабатыает ф-ция mail();

 

Может, у меня ошибка? 

Так как, письма как-то отправлялись с этого хостинга...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy