PHP для новичков: Отправка email

Отправка email-сообщений с сайта – ключевая задача при разработке веб-приложений. Рассмотрим отправку писем с помощью PHP.

Отправка простого сообщения

Создадим простое сообщение. Определим переменные:

  • $message – текст сообщения (например, «Это самое простое сообщение»).
  • $to – email-адрес получателя (например, адрес@gmail.com).
  • $subject – тема сообщения (например, «Тема сообщения»).

Для отправки используется функция mail(), передающая команду приложению sendmail. PHP не отправляет сообщения напрямую, а передает команду внешней утилите. В Denwer sendmail создает папку sendmail в директории tmp, куда сохраняются отправленные сообщения. На реальном хостинге сообщения отправляются на указанный email-адрес.

Функция mail() принимает три параметра:

  1. $to (кому)
  2. $subject (тема)
  3. $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 в заголовках. Данные для отправки (текст, тема, адреса) можно брать из полей форм, заполняемых пользователем.

Что будем искать? Например,программа