Отправка email-сообщений с сайта – ключевая задача при разработке веб-приложений. Рассмотрим отправку писем с помощью PHP.
Отправка простого сообщения
Создадим простое сообщение. Определим переменные:
- $message – текст сообщения (например, «Это самое простое сообщение»).
- $to – email-адрес получателя (например, адрес@gmail.com).
- $subject – тема сообщения (например, «Тема сообщения»).
Для отправки используется функция mail(), передающая команду приложению sendmail. PHP не отправляет сообщения напрямую, а передает команду внешней утилите. В Denwer sendmail создает папку sendmail в директории tmp, куда сохраняются отправленные сообщения. На реальном хостинге сообщения отправляются на указанный email-адрес.
Функция mail() принимает три параметра:
- $to (кому)
- $subject (тема)
- $message (текст сообщения)
Пример кода:
<?php
$message = "Это самое простое сообщение";
$to = "адрес@gmail.com";
$subject = "Тема сообщения";
mail($to, $subject, $message);
?>
После обновления страницы в браузере, сообщение появится в папке sendmail директории tmp Denwer. Успешная отправка локально указывает на работоспособность на реальном хостинге, при условии, что хостинг поддерживает отправку почты.
Отправка сообщения с заголовками
Предыдущий пример некорректен, поскольку не использует заголовки. Заголовки гарантируют правильную кодировку и обработку большинством почтовых клиентов.
Добавим четвертый параметр в функцию mail() – $headers. Определим переменную $from – адрес отправителя:
$from = "отправитель@mail.ru";
Создадим заголовки:
$headers = "From: $fromr\n" .
"Reply-To: $fromr\n" .
"Content-Type: text/plain; charset=utf-8r\n";
Здесь:
- From: – отправитель.
- Reply-To: – адрес для ответа.
- Content-Type: – кодировка (UTF-8). r\n – символ перевода каретки.
Вызов функции mail():
mail($to, $subject, $message, $headers);
Некоторые почтовые сервисы (например, Mail.ru) могут неправильно обрабатывать тему. Для корректной обработки добавим кодировку:
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
Рассмотрена отправка email-сообщений с помощью PHP. Использование заголовков гарантирует корректную обработку почтовыми клиентами. Успешная отправка локально (в Denwer) с высокой вероятностью означает работоспособность на реальном хостинге (при условии его поддержки). При использовании кодировки отличной от UTF-8 (например, Windows-1251), необходимо изменить параметр charset в заголовках. Данные для отправки (текст, тема, адреса) можно брать из полей форм, заполняемых пользователем.