Открыть меню    

Отправить письмо с помощью PHP

Как отправить письмо с помощью PHP?

HTML форма с input

HTML

<form action="" method="post">
  <label for="name">Name:</label>
  <input type="text" name="name" id="name" />

  <label for="Email">Email:</label>
  <input type="text" name="email" id="email" />

  <label for="Message">Message:</label><br />
  <textarea name="message" rows="20" cols="20" id="message"></textarea>

  <input type="submit" name="submit" value="Submit" />
</form>

Обрабатывает с помощью PHP

Следующий код может быть выделен в отдельный файл. Достаточно прописать активный url в форме, ссылающийся на этот файл-обработчик. Или можно опустить файл обработчик (action url) и обрабатывать письмо в одном файле.

PHP

<?php
// Данные полученные из формы
$name = trim(strip_tags($_POST['name']));
$email = trim(strip_tags($_POST['email']));
$message = htmlentities($_POST['message']);

// trim() - убираем все лишние пробелы и переносы строк, // strip_tags() — удаляет HTML и PHP тэги из строки, // htmlentities — преобразует символы в соответствующие HTML сущности (иногда необходимо убрать для корректного вывода кириллицы). // Настройки
// $subject - тема сообщения (как видно - всегла одна и таже)
$subject = "Contact form submitted!";
// $to - кому отправляем
$to = 'your@email.com';

$body = <<<HTML
$message
HTML;

$headers = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";

// послать письмо
mail($to, $subject, $body, $headers);

// переадресовываем послесловие, если необходимо
header('Location: thanks.html');
?>

Предотвращаем повторную отправку формы при обновлении страницы

Чтобы повторно не отправлять форму, например, если пользователь заполнил форму, отправил данные, и нажимает обновить страницу (что значит повторить запрос, таким образом данные повторно отправятся на сервер), нужно после обработки форму ставить:

PHP

header("Location: your_page.php");

Комментарии к статье

аватарка пользователя
2011-11-09
Федя

куда вставить PHP???

аватарка пользователя
2012-02-03
rrr

создай файл к примеру mail.php и вставь в нрего код php. а в HTML форма с input в строке (<form action="" method="post">) должен написать так (<form action="mail.php" method="post">)

аватарка пользователя
2014-08-18
mastapobeg

Не работает, при нажатии отправляет меня на файл php