Уважаемые друзья, форма вопрос - ответ снова в строю!

Php отправка письма

С появлением форм обратной связи, гостевых книг, отзывов, форумов и т.д. Появилась потребность отслеживать, когда пользователь ввел, что-то в форму и оставил Вам сообщении. Согласитесь, что не удобно проверять вручную сообщения не зная заранее есть ли оно или нет. Для выхода из этой ситуации нам помогут почтовые сервисы такие как mail.ru, yandex.ru и другие. Возникает вопрос, как связать свой сайт, а точнее форму обратной связи с почтой, чтобы сообщение уходило на почту и Вы могли оперативно реагировать на сообщения с сайта.

Для решения данной задачи нам поможет маленький, но очень шустрый скрипт, который будет отправлять нам сообщения на почту о том, что нам оставили сообщение. В основе скрипта лежит PHP функция

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] );

Мы не будем здесь рассматривать отправку письма с вложением, нас интересует только отчет о поступившем сообщении с сайта. Для того чтобы отправить письмо нам нужно три параметра, а именно: отправитель, получатель и сам текст письма. Тело письма мы будем отправлять в HTML разметки. Чтобы почтовый сервер понимал, что мы хотим в теле письма отправить HTML нужно указать Content-type в заголовках почтового сервера.

Пишем скрипт php отправки письма.


 <?php
 /**
 * Файл с пользовательскими функциями
 * Site: http://bezramok-tlt.ru
 * Регистрация пользователя письмом
 */
 
 // Устанавливаем константы 
 //Адрес почты кому отправляем
 define('KAS_MAIL_TO','Администратору <*****@yandex.ru>');

 //Адрес почты от кого отправляем
 define('KAS_MAIL_AUTOR','Робот доставки <no-reply@bezramok-tlt.ru>');
 
 /**Отпровляем сообщение на почту
 * @param string  $to - Кому
 * @param string  $from - От кого
 * @param string  $title - Заголовок письма
 * @param string  $message - Тело письма
 */
 function sendMail($to, $from, $title, $message)
 {

   //Формируем заголовок письма
   $subject = $title;
   $subject = '=?utf-8?b?'. base64_encode($subject) .'?=';
   
   /*Формируем заголовки для почтового сервера,
   Говорим серверу что используем HTML*/
   $headers = "Content-type: text/html; charset=\"utf-8\"\r\n";
   $headers .= "From: ". $from ."\r\n";
   $headers .= "MIME-Version: 1.0\r\n";
   $headers .= "Date: ". date('D, d M Y h:i:s O') ."\r\n";

   //Отправляем данные на ящик
   if(!mail($to, $subject, $message, $headers))
      return 'Ошибка отправки письма!';  
   else  
      return true;  
 }
 
 //Формируем заголовок письма
 $title = 'Ура нам письмо пришло!';
 
 //Формируем HTML верстку письма для отправки
 $msg = '<h1>Ура нам письмо пришло!</h1><br />
 		<p>Это письмо создано автоматически, отвечать на него не нужно!</p>';
 		
 //Вызываем функцию отправки письма
 if(sendMail(KAS_MAIL_TO, KAS_MAIL_AUTOR, $title, $msg))
 	echo 'Письмо отправленно...'
?>

Вот такой простой скрипт php отправки письма. Вам нужно вызывать данную функцию в обработчике вашей формы в случае если форма прошла валидацию.

Николай
19:33:47 05/12/2016г.
Хочу вставить в index.html файл с расширением php (включить как include). Как это сделать в html?

Переименовать файл index.html в index.php и подключить файл, если нужно прям html то нужно перенастраивать сам Apache чтобы он пропускал html через php

- Администрация     - 14:35:05 08/12/2016г.

Александр
18:51:06 05/12/2016г.
Спасибо, хорошие уроки на сайте. Еще бы такие уроки, как чтобы после регистрации появлялись аватарки с данными и  урок: где оставляют комментарии под статьями. 

Пока нет времени на написание, возможно, что-то изменится на новогодние праздники.

- Администрация     - 19:11:59 05/12/2016г.

Александр
18:40:58 05/12/2016г.
Это создается отдельным файлом, а после привязывается к index.php ?

Как вам удобно, можно отдельно, можно все в одном файле! Вас никто не ограничивает.

- Администрация     - 18:43:37 05/12/2016г.

Иван
18:22:49 12/06/2016г.
Говно, нерабочий!!!!!!!!!!

Не обоснованное утверждение! Скрипт на 120% рабочий. Скорей всего Вы использовали его под локальным сервером типа ДЕНВЕР или openserver или бесплатный хост. Естественно, что там отправка писем не будет работать!

- Администрация     - 22:25:08 12/06/2016г.

  • 1

Получить уведомление на Email

Введите код с картинки