Отправка содержимого этой формы по электронной почте

0

Будет ли это работать, я хочу отправить по электронной почте содержимое моей формы по адресу электронной почты@example.com, но когда я запускаю его в localhost, он не отправляется, мне интересно, будут ли результаты в Интернете разными, я не знаю, почему он не работал бы в Интернете. Я просто хочу, чтобы имя и сообщение отправлялись по электронной почте на указанный адрес электронной почты. Когда я отправляю его, ошибок нет, и он перенаправляет меня на страницу, в которой говорится, что вы хотите связаться с нами.

<form name="contactform" method="post" action="send_form_email.php">
<input name="name" placeholder="Your Name"></input>
<br>
<textarea name="message" placeholder="Email Us." style="height:100px;">    </textarea>
<input type="submit" id="sub" value="Submit" placeholder="Submit" style=""></input>
 </form>



<?php
if(isset($_POST['message'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = "Customer";
function died($error) {
 // your error code can go here
    echo "We are very sorry, but there were error(s) found with the form you submitted. ";
    echo "These errors appear below.<br /><br />";
    echo $error."<br /><br />";
    echo "Please go back and fix these errors.<br /><br />";
    die();
}
if(!isset($_POST['message'])){
 died('We are sorry, but there appears to be a problem with the form you submitted.');       
}
$name = $_POST['name']; // required
$message = $_POST['message']; // required
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
$string_exp = "/^[A-Za-z .'-]+$/";
if(!preg_match($string_exp,$name)) {
 $error_message .= 'The Name you entered does not appear to be valid.<br />';
}
if(!preg_match($string_exp,$message)) {
 $error_message .= 'The message you entered does not appear to be valid.<br />';
}
 $email_message = "Form details below.\n\n";
 function clean_string($string) {
  $bad = array("content-type","bcc:","to:","cc:","href");
  return str_replace($bad,"",$string);
}
$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "Message: ".clean_string($message)."\n";
'X-Mailer: PHP/' . phpversion();
 ?>
Thank you for contacting us. We will be in touch with you very soon.
<?php
}
?>
Теги:
forms

4 ответа

0

Я просмотрел код, добавил функцию php mail, запустил его онлайн на моем веб-сервере, и он работает нормально. Окружающая среда, на которую вы его тестируете, кажется, не имеет работающего почтового сервера, или она не была настроена должным образом.

Функция почты может быть включена с использованием этого кода, переменная $ email_message в вашем коде хранит сообщение, которое будет отправлено по электронной почте:

<?php
mail("[email protected]","My subject",$email_message);
?>
0

Мне интересно, будут ли результаты различными в Интернете

Это зависит от того, настроены ли ваши серверы по-разному, разные модули Apache, разные версии PHP и т.д.

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

когда я запускаю его в localhost, он не отправляет

Я предполагаю, исходя из вопроса, который вы задаете, что вы не настроили локальный почтовый сервер или не настроили некоторые настройки почты SMTP (например, Gmail).

Поиск Stack для отправки почты на localhost, и вы можете заставить его работать и тестировать, прежде чем бросать его в дикую природу.

Вот стартовый пример:
php отправлять почту с localhost

В качестве альтернативы, на вашем живом сервере/хостинге пароль защищает сайт (или каталог, если он находится на сайте), загружает код в защищенную паролем область, поэтому он не является общедоступным и проверяет его самостоятельно!

Он перенаправляет меня на страницу, в которой говорится, что вы за то, что обратились к нам.

Он не перенаправляет вас нигде, ваш сценарий просто отображает сообщение "Спасибо, что обратились к нам. Мы скоро свяжемся с вами", потому что он находится внизу вашего скрипта.

Таким образом, кроме фатальной ошибки или $_POST['message] которое остановило бы скрипт, любой код выше этого сообщения не имеет никакого значения для отображаемого сообщения или нет. Он всегда отображает это сообщение.

Вам нужно будет поместить некоторую простую проверку на место, чтобы определить, действительно ли отправлено письмо или нет - что-то вроде, если почта отправила эхо "ok", иначе echo "failed".

0

Я не вижу вызова функции почты (http://php.net/manual/en/function.mail.php). Я пропустил его в пасте, или это может быть проблемой?

mail($email_to, $email_subject, $email_message);
0

Вам нужно использовать mail() для отправки данных. И перед этим вам нужно настроить SMTP-сервер на своем локальном хосте или сервере, на котором вы его тестируете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню