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

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

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: https://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 отправки письма. Вам нужно вызывать данную функцию в обработчике вашей формы в случае если форма прошла валидацию.


Теги
Поддержи проект:

No-name
Николай
Хочу вставить в index.html файл с расширением php (включить как include). Как это сделать в html?

05/12/2016 19:33:47

Администрация
Администрация

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

08/12/2016 14:35:05

No-name
Александр
Спасибо, хорошие уроки на сайте. Еще бы такие уроки, как чтобы после регистрации появлялись аватарки с данными и  урок: где оставляют комментарии под статьями. 

05/12/2016 18:51:06

Администрация
Администрация

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

05/12/2016 19:11:59

No-name
Александр
Это создается отдельным файлом, а после привязывается к index.php ?

05/12/2016 18:40:58

Администрация
Администрация

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

05/12/2016 18:43:37

No-name
Иван
Говно, нерабочий!!!!!!!!!!

12/06/2016 18:22:49

Администрация
Администрация

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

12/06/2016 22:25:08


Copyright © 2014 - 2024 All rights reserved.