Почему сообщение не отправляется через mail() на почту при использовании openserver?

Как настроить отправку электронной почты через PHP на локальном сервере OpenServer?
  • 22 декабря 2023 г. 13:37
Ответы на вопрос 2
Есть несколько возможных причин, по которым сообщение не отправляется через mail() при использовании OpenServer:

1. Неправильная конфигурация сервера: Убедитесь, что SMTP-сервер настроен правильно в файле php.ini. Откройте php.ini в редакторе и убедитесь, что строки "SMTP" и "smtp_port" указывают на правильный адрес SMTP-сервера и порт. Например:
```
SMTP = smtp.gmail.com
smtp_port = 587
```

2. Отсутствие установленного SMTP-сервера: Если на вашем сервере OpenServer не установлен SMTP-сервер, сообщение не будет отправлено. Решение этой проблемы - установка и настройка SMTP-сервера. Например, вы можете установить и настроить сервер Sendmail или использовать сторонний SMTP-сервер, такой как Gmail или Mailgun.

3. Блокировка порта отправки: Ваш провайдер интернет-услуг может блокировать порт, который используется для отправки почты SMTP. В этом случае вам может потребоваться связаться со своим провайдером и узнать, какой порт SMTP можно использовать.

4. Блокировка исходящего трафика вашим антивирусом или брандмауэром: Проверьте настройки вашего антивирусного программного обеспечения или брандмауэра и убедитесь, что он не блокирует исходящий трафик для вашего веб-сервера.

Чтобы настроить отправку электронной почты через PHP на локальном сервере OpenServer, выполните следующие шаги:

1. Убедитесь, что на вашем сервере OpenServer установлен SMTP-сервер, например, Sendmail. Если он не установлен, можете найти инструкции по его установке в Интернете.

2. Откройте файл php.ini в редакторе и найдите строки "SMTP" и "smtp_port". Установите значения в соответствии с вашим SMTP-сервером, например:
```
SMTP = smtp.gmail.com
smtp_port = 587
```

3. Перезапустите сервер OpenServer для применения изменений в php.ini.

4. В вашем PHP-скрипте добавьте код отправки электронной почты с использованием функции mail(). Например:
```php
$to = "[email protected]";
$subject = "Test email";
$message = "Hello! This is a test email.";
$headers = "From: [email protected]";

if(mail($to, $subject, $message, $headers)){
   echo "Email sent successfully.";
} else{
   echo "Email sending failed.";
}
```

5. Запустите ваш PHP-скрипт и проверьте, отправляется ли электронное письмо успешно.

Обратите внимание, что в зависимости от настроек вашего SMTP-сервера могут потребоваться дополнительные параметры, такие как имя пользователя и пароль для аутентификации.
При использовании mail() в OpenServer он отправляет письма только в текстовый лог ("Просмотр логов" - "Почта"). 
Для реальной отправки настраивайте в настройках отправку через smtp сервер (гугл, майл, любой другой для тестов: https://ospanel.io/docs/#smtp ).
Похожие вопросы