Отправка сообщений является важной составляющей любого сайта. Данная возможность реализуется функцией php mail(), которая должна обрабатываться всеми нормальными хостингами.
Если говорить просто, то синтаксис mail() не сложный. Он выглядит так:
mail($to, $subject, $message, [$dopheaders] );
$to - получатель письма (кому отправляем письмо)
$subject - тема письма
$message - сообщение
[$dopheaders] - дополнительные параметры и заголовки, которые можно передавать в сообщении. Это не обязательный параметр.
Если у вас есть какая-нибудь страничка index.php в сети, то можете проверить обрабатывает ли ваш хостинг php mail() функцию. Для этого вставьте в свой файл код ниже и запустите его (не забудьте поменять testorrdemo@mail.ru на свой ящик).
<?php
if(mail("testorrdemo@mail.ru", "My Subject", "Line 1\nLine 2\nLine 3")) echo "message send";
else echo "message not send";
?>
Если на вашу почту придет сообщение и скрипт выдаст "message send", то функция php mail() работает.
Теперь давайте создадим более сложный код для отправки сообщений:
<?php
$to = "testorrdemo@mail.ru";
$subject = "Письмо с вашего сайта!";
$charset = "utf-8";
$headerss ="Content-type: text/html; charset=$charset\r\n";
$headerss.="Date: ".date('D, d M Y h:i:s')."\r\n";
$headerss.="From: Тест <no-reply@vash-sait.ru>\r\n";
$msg = "Сообщение";
mail($to, $subject, $msg, $headerss);
?>
Если с переменными $to и $subject все понятно, то в $headerss мы добавляем жизненно необходимые параметры для письма. Например:
- Content-type: text/html - указывает на то, что теперь мы сможем в сообщение добавлять html теги, а charset=$charset - устанавливает кодировку письма в utf-8
- Date - вставляет дату в тело письма
- From - от кого письмо. Тест - имя отправителя, а запись <no-reply@vash-sait.ru> указывает email отправителя - желательно указывайте домен сайта
Некоторые почтовые сервисы не однозначно относятся к полю From, поэтому его можно и вовсе удалить, тогда подставятся значения от хостинга.
Также можно указать кому отвечать на письмо, даже если From не существует с помощью строки $headerss.="Reply-To: newtestorrdemo@mail.ru\r\n";
В этом случае, если пользователь нажмет "Ответить", то ответ вы получите на email в поле "Reply-To".