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
Евгений
Вот что показывает Яндекс когда наводишь на зеленый замочек - Отправитель письма подтверждён и проверен Спамообороной Яндекса., Отправитель: aleit.ru, Подпись: aleit.ru, Шифрование: Да. Пробовал подключать PHPMailer, бился неделю, не чего не отправляет или начинает вызывать серверную ошибку 500. PHPMailer разные версии пробовал не чего не пашет.

03/12/2025 18:51:35

Админ
Админ

Возможно неправильно его настраивали, там есть нюансы по авторизаци на стороннем SMTP

04/12/2025 16:06:08

No-name
Евгений
Записи DKMI есть (их настроил хостинг провайдер), почта доменная, Яндекс ставит зеленый замочек - так что всё ОК.

03/12/2025 18:32:15

Админ
Админ

Тогда все отлично, раз у вас все работает.

04/12/2025 16:05:03

No-name
Евгений
Супер! Скрипт работает отлично, все заголовки передаются корректно. Огромное спасибо дружище!!!!!

03/12/2025 11:11:06

Админ
Админ

Рад, что у вас получилось. Но в текущих реалиях данный способ не актуален, письмо могу не доходить из за проверок почтовых серверов, например записи DKMI  и т.д.

Да и сами хостеры отключают данную функцию у себя, чтобы не было рассылок черех функцию mail()

Для гарантированного результат нужно использовать библиотеку PHPMailer или что-то похожете, чтобы можно было отправлять письма через сторонний SMTP сервер.

03/12/2025 11:18:47

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 - 2025 All rights reserved.