Для настройки отправки локальных писем через почту в Open Server необходимо включить модуль SMTP, настроить параметры почтового сервера и проверить конфигурацию PHP. Это позволяет тестировать отправку писем без использования внешних почтовых сервисов.
Для чего это нужно
- Тестирование функционала отправки писем при разработке веб-приложений
- Отправка уведомлений с локального сервера без подключения к внешним SMTP-серверам
- Эмуляция работы почтовой системы в изолированной среде разработки
- Проверка корректности кода обработки ошибок отправки писем
- Логирование писем в папке без фактической отправки
- Ускорение процесса разработки и отладки
Пошаговая инструкция
Этап 1: Подготовка и проверка модулей Open Server
- Запустите Open Server.
- Нажмите на меню
Модулив главном окне. - Убедитесь, что модуль
ApacheилиNginxвключён (статус должен быть зелёным). - Проверьте, что модуль
PHPактивирован. - Найдите и включите модуль
SMTP(если он доступен в вашей версии Open Server). - Нажмите кнопку
ПрименитьилиSave.
Этап 2: Настройка параметров SMTP в Open Server
- В главном окне Open Server нажмите на кнопку
ПараметрыилиSettings. - Перейдите в раздел
Модули→SMTP. - Установите значение
SMTP-сервернаlocalhostили127.0.0.1. - Установите
SMTP-портна25(или587для защищённого соединения, если требуется). - Поле
SMTP-логиноставьте пустым для локального сервера. - Поле
SMTP-парольоставьте пустым. - Установите
Адрес отправителяна значение типаno-reply@localhostилиwebmaster@localhost. - Нажмите
Сохранитьи закройте окно параметров.
Этап 3: Настройка конфигурации PHP
- Откройте файл конфигурации PHP:
C:\OpenServer\modules\php\PHP_VERSION\php.ini(заменитеPHP_VERSIONна вашу версию). - Найдите строки, начинающиеся с
[mail function]. - Убедитесь, что строка
SMTP = localhostприсутствует и не закомментирована (без символа;в начале). - Убедитесь, что строка
smtp_port = 25присутствует и активна. - Найдите параметр
sendmail_fromи установите значениеsendmail_from = webmaster@localhost. - Сохраните файл
php.ini. - Перезагрузите Apache или Nginx через меню Open Server.
Этап 4: Включение логирования писем (опционально)
- В файле
php.iniнайдите параметрsendmail_path. - Раскомментируйте эту строку, удалив символ
;в начале. - Установите значение:
sendmail_path = "cat >> C:\OpenServer\logs\mail.log"(для логирования писем в файл). - Создайте папку
logsв корне Open Server, если её нет. - Сохраните
php.iniи перезагрузите веб-сервер.
Этап 5: Тестирование отправки письма
- Создайте PHP-файл
test_mail.phpв папке вашего проекта. - Скопируйте следующий код в файл:
<?php $to = "Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. "; $subject = "Тестовое письмо"; $message = "Это тестовое письмо с локального сервера Open Server"; $headers = "From: webmaster@localhost\r\nContent-Type: text/plain; charset=UTF-8"; if (mail($to, $subject, $message, $headers)) { echo "Письмо успешно отправлено"; } else { echo "Ошибка при отправке письма"; } ?> - Сохраните файл.
- Откройте браузер и перейдите по адресу
http://localhost/test_mail.php. - Проверьте результат отправки — должно появиться сообщение об успехе или ошибке.
- Если письма логируются, проверьте файл
C:\OpenServer\logs\mail.log.
Этап 6: Решение проблем с кодировкой
- В PHP-коде используйте заголовок
Content-Type: text/plain; charset=UTF-8для правильного отображения кириллицы. - Убедитесь, что PHP-файл сохранён в кодировке
UTF-8без BOM. - Используйте функцию
iconv()илиmb_convert_encoding()для преобразования текста при необходимости. - Проверьте в браузере, что письмо отправлено без ошибок кодирования.
Часто задаваемые вопросы
Где находится логирование отправленных писем в Open Server? По умолчанию письма логируются в папке C:\OpenServer\logs\mail.log, если вы включили параметр sendmail_path в php.ini.
Какой порт использовать для SMTP в локальной среде Open Server? Используйте порт 25 для стандартного локального SMTP или порт 587 для безопасного соединения, если поддерживается.
Можно ли отправлять письма с вложениями через локальный SMTP в Open Server? Да, используйте функцию mail() с правильными заголовками Content-Type и Content-Disposition, либо используйте библиотеку PHPMailer или SwiftMailer для удобства.