Как PHP отправляет почту
PHP не отправляет почту напрямую. Он использует функции для передачи данных специальным службам и протоколам, отвечающим за отправку. Это означает, что PHP предоставляет необходимый функционал, но сам процесс отправки выполняется внешними службами.
Отправка письма: пример кода
В этом примере для демонстрации отправки письма используются переменные, а не форма.
Переменные письма
Создадим переменные для хранения информации о письме:
- $message: текст сообщения (например, "Сообщение").
- $to: адрес получателя (например, "odin@itiprager.com").
- $from: адрес отправителя (например, "example@itiprager.com").
- $subject: тема сообщения (например, "Тема сообщения").
Кодирование темы и заголовки
Тема сообщения кодируется в UTF-8 для поддержки кириллицы и латиницы:
$subject = "Тема сообщения";
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
Заголовки письма формируются в переменной $headers:
$headers = "From: ".$from."r\n".
"Reply-to: ".$from."r\n".
"Content-type: text/plain; charset=UTF-8r\n";
Заголовки содержат отправителя (From), адрес для ответа (Reply-to), тип сообщения (Content-type, простой текст) и кодировку (charset).
Отправка письма с помощью mail()
Для отправки письма используется функция mail():
mail($to, $subject, $message, $headers);
Функция mail() принимает четыре аргумента: адрес получателя, тему, тело сообщения и заголовки.
Тестирование
Тестирование отправки писем с локального сервера, как правило, не работает. Функция mail() корректно функционирует на удалённых серверах (после размещения сайта на хостинге).
В этом уроке описаны основы отправки почты в PHP. Код будет работать на удалённом сервере при правильных настройках и кодировках.