
Для тестирования отправки сообщений с разрабатываемого сайта, есть возможность настроить отправку сообщений, используя бесплатный почтовый сервер gmail.com или mail.ru. Тогда сообщения будут уходить на сервер в интернете. Но, если выхода в Интернет нет, то можно настроить отправку сообщений на локальный сервер, используя Mercury Mail, входящий в XAMPP.

Если Mercury Mail запустили из XAMPP, то чтобы открыть окно программы необходимо нажать кнопку Admin. Идем в Configuration -> Manage Local users – Add. Там заводим пользователя, к примеру, root с паролем root1:


Проводим следующие настройки:
Все, теперь осталось настроить какой-нибудь почтовый клиент, чтобы принимать и проверять “пришедшую” почту. У меня на компьютере оказался Outlook 2010 из состава Microsoft Office. Добавляем учетную запись:

Вводим параметры учетной записи:

Для теста, пробуем послать письмо сами себе:

Жмем кнопку получить письма

Пришло письмо:

Осталось попробовать отправить письмо из программы. Наберем код в новый файл sendmail.php:
<?php
$email = "root@localhost.com";
$subj = "Тестовое сообщение на Mercury mail";
$emess = "Все ОК!".PHP_EOL;
$emess.= "Hello World. If all went well then you can see this mail in your Inbox".PHP_EOL;
$headers = "From: root@localhost.com";
$mailsend = mail("$email", "$subj", "$emess", "$headers");
if ($mailsend)
echo "Письмо отправлено";
else
echo "Ошибка отправки письма";
?>
Запустим через сервер файл http://127.0.0.1/as/sendmail.php. Пришло письмо:

Как видим, русская кодировка не прошла. Получили Windows-1251 вместо utf-8. Для исправления изменим код:
<?php
function mail_utf8($to, $subject = '(No subject)', $message = '', $headers)
{
$header2 = 'MIME-Version: 1.0' . "\n" . 'Content-type: text/plain; charset=UTF-8' . "\n" . 'From: <' . $headers . ">\n";
mail($to, '=?UTF-8?B?' . base64_encode( $subject ) . '?=', $message, $header2);
return true;
}
$email = "root@localhost.com";
$subj = "Тестовое сообщение на Mercury mail";
$emess = "Все ОК!".PHP_EOL;
$emess.= "Hello World. If all went well then you can see this mail in your Inbox".PHP_EOL;
$headers = "root@localhost.com";
$mailsend = mail_utf8 ("$email", "$subj", "$emess", "$headers");
if ($mailsend)
echo "Письмо отправлено";
else
echo "Ошибка отправки письма";
?>
Все в порядке:

Вывод
Теперь при локальной разработке сайта мы можем тестировать работу с электронной почтой.