OpenServer 5.4.3 установлен в каталог D:\Tools\OpenServer и настроен получаемую почту складывать в каталог D:\Tools\OpenServer\userdata\temp\email
. Случилась странная ситуация - из-под чистого PHP8 отправка почтового сообщения посредством функции mail() отрабатывает нормально, а из-под Laravel 10 утилита D:\Tools\OpenServer\modules\sendmail\sendmail.exe
зависает в памяти и ничего не отправляет. Помогает только снятие процесса. Возможно какой-то конфликт в формате отправляемого сообщения - я формирую письмо по шаблону формата markdown. Не понятно, но ситуацию исправляем.
Тут не принципиально, но сообщения лучше сохранять с расширением eml. Правим файл D:\Tools\OpenServer\userdata\config\sendmail.ini
:
[sendmail]
auth_username = %auth_username%
auth_password = %auth_password%
default_domain =
debug_logfile = "%progdir%\userdata\logs\mail_debug.log"
extension = eml
force_sender = %force_sender%
force_recipient =
hostname =
pop3_server = %pop3_server%
pop3_username = %pop3_username%
pop3_password = %pop3_password%
smtp_port = %smtp_port%
smtp_server = %smtp_server%
smtp_ssl = %smtp_ssl%
Тут есть важная настройка, собственно, которая и позволяет почте работать нормально - это MAIL_SENDMAIL_PATH. Блок настройки почты выглядит так:
MAIL_MAILER=sendmail
MAIL_HOST=null
MAIL_PORT=null
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="you.name@mail.tld"
MAIL_FROM_NAME="${APP_NAME}"
MAIL_SENDMAIL_PATH="D:/Tools/OpenServer/modules/sendmail/sendmail.exe -t -i"
На реальном хостинге, естественно, последнюю строку удаляем.
Да, без нее новые настройки не подхватятся. Запускаем командный файл:
php artisan cache:clear
php artisan view:clear
php artisan config:cache
php artisan route:cache
php artisan optimize
Перегружаем OpenServer и обновляем страницу своего проекта с отправкой почтового сообщения.