Laravel, php: проблемы с отправкой почты на CentOS 7
Настройки почты находятся в файле .env. Выбирая MAIL_MAILER=smtp или MAIL_MAILER=sendmail вы даже при правильных настройках скорее всего получите следующее сообщение об ошибке при отправке письма: Swift_TransportException Connection could not be established with host :stream_socket_client(): unable to connect to ssl://:465 (Permission denied)
Функция mail php тоже почту не отправляет. При том, что из командной строки утилита mail письмо отправляет. Для решения данной проблемы нужно выполнить следующие две команды:
$ setsebool -P httpd_can_network_connect on $ setsebool -P httpd_can_sendmail on
Если не стоит sendmail, то:
yum install sendmail sendmail-cf -y systemctl enable sendmail systemctl start sendmail
Но и на этом приключения могут не закончиться. Вы можете получить такое сообщение: Failed to authenticate on SMTP server with username "mailbox@itsoft.ru" using 2 possible authenticators. Authenticator LOGIN returned Expected response code 235 but got code "535", with message "535 5.7.0 Error: authentication failed: UGFzc3dvcmQ6 ". Authenticator PLAIN returned Expected response code 235 but got code "535", with message "535 5.7.0 Error: authentication failed: UGFzc3dvcmQ6
Такая ошибка аутентификации возникает, если в пароле есть символ # и пароль не заключён в двойные кавычки. Заключите пароль в двойные кавычки и авторизация пройдёт успешно.
Если вы выбираете MAIL_MAILER=sendmail, то параметры:
MAIL_PORT=465 MAIL_HOST=itsoft.ru MAIL_USERNAME=mailbox@itsoft.ru MAIL_PASSWORD="dhdbfjkeb45DFDWDCe" MAIL_ENCRYPTION=ssl
заполнять не нужно. Они роли не играют, см. config/mail.php
'sendmail' => [ 'transport' => 'sendmail', 'path' => '/usr/sbin/sendmail -bs', ],