Для тестирования отправки сообщений с разрабатываемого сайта, есть возможность настроить отправку сообщений, используя бесплатный почтовый сервер 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 "Ошибка отправки письма"; ?>
Все в порядке:
Вывод
Теперь при локальной разработке сайта мы можем тестировать работу с электронной почтой.