Интернет-магазины на HostCMS периодически «заглючивают» на этапе отправки письма администратору магазина и пользователю, который совершил заказ. Заказ, разумеется, отображается в административной панели, но вот Email-оповещение не приходит.
Такая же ситуация может возникать и с другими модулями HostCMS, не только в интернет-магазине.
Проблема может быть в двух случаях:
- На вашем хостинге отключена функция mail().
- Неверно настроен драйвер для отправки Email.
На вашем хостинге отключена функция mail().
В первом случае это можно легко проверить, путем создания php-файла (скрипта) в пару строк, где первым параметром функции mail() укажите вашу электронную почту, на которое придёт тестовое письмо:
<?php
echo mail('ваш@mail.ru', 'Проверка почты', 'Отправка писем успешно работает');
Сохраняем, переносим этот файл на хостинг и открываем через браузер. Допустим, вы назвали файл test.php, а адрес вашего сайта http://myweb.com. Значит, перейти надо на http://myweb.com/test.php
Если вы увидите цифру 1, значит, письмо отправилось. Далее, оно должно дойти на указанный вами Email. Проверьте также спам. Если письмо пришло - первый вариант мы отбрасываем.
Кстати, если вы самостоятельно не можете проделать эту операцию или вы ничего не увидели на экране во время проверки скрипта – обратитесь к вашему хостинг-провайдеру: они сделают всё за вас.
Перейдем ко второму случаю.
Неверно настроен драйвер для отправки Email.
Второй вариант также не очень сложный. Поддержка HostCMS отправляет всех пользователей с такой проблемой на страницу документации. Там описан процесс настройки SMTP вместо sendmail. Делаем всё, как указано на странице:
Находим в файлах вашей системы HostCMS конфигурационный файл по адресу modules/core/config/mail.php
Открываем его в текстовом редакторе:
<?php
return array (
'default' => array (
'driver' => 'sendmail',
),
'sendmail' => array (
'driver' => 'sendmail',
),
'smtp' => array (
'driver' => 'smtp',
'username' => 'address@domain.com',
'port' => '25', // для SSL порт 465
'host' => 'smtp.server.com', // для SSL используйте ssl://smtp.gmail.com
'password' => ''
)
);
В документации указано множество дополнительных настроек, но на практике они вам не нужны. Находим код:
'smtp' => array (
'driver' => 'smtp',
'username' => 'address@domain.com',
'port' => '25', // для SSL порт 465
'host' => 'smtp.server.com', // для SSL используйте ssl://smtp.gmail.com
'password' => ''
)
Здесь указываем настройки вашего SMTP-ящика. Обязательно укажите полностью ваш Email-адрес ('username') и пароль ('password').
Допустим, если у вас Яндекс-почта, то настройки будут такие:
'smtp' => array (
'driver' => 'smtp',
'username' => 'ЛОГИН@yandex.ru',
'port' => '465', // для SSL порт 465
'host' => 'ssl://smtp.yandex.ru', // для SSL используйте ssl://smtp.gmail.com
'password' => 'ПАРОЛЬ'
)
Или Gmail:
'smtp' => array (
'driver' => 'smtp',
'username' => 'ЛОГИН@gmail.com',
'port' => '465', // для SSL порт 465
'host' => 'ssl://smtp.gmail.com', // для SSL используйте ssl://smtp.gmail.com
'password' => 'ПАРОЛЬ'
)
Или Mail.ru:
'smtp' => array (
'driver' => 'smtp',
'username' => 'ЛОГИН@mail.ru',
'port' => '465', // для SSL порт 465
'host' => 'ssl://smtp.mail.ru', // для SSL используйте ssl://smtp.gmail.com
'password' => 'ПАРОЛЬ'
)
После внесения ваших настроек необходимо изменить выбор почтового драйвера по умолчанию. Это делается в этом же файле (строки 4-6). Вместо:
'default' => array (
'driver' => 'sendmail',
),
Укажем:
'default' => array (
'driver' => 'smtp', // заменить 'sendmail' на 'smtp'
),
Вот файл целиком:
<?php
return array (
'default' => array (
'driver' => 'smtp',
),
'sendmail' => array (
'driver' => 'sendmail',
),
'smtp' => array (
'driver' => 'smtp',
'username' => 'ЛОГИН@mail.ru',
'port' => '465', // для SSL порт 465
'host' => 'ssl://smtp.mail.ru', // для SSL используйте ssl://smtp.gmail.com
'password' => 'ПАРОЛЬ'
)
);
Настройки для вашей почты можно найти в Интернете с ключевым словом SMTP.
Если вас интересует профессиональная разработка сайтов на HostCMS – пишите мне. Удачи.