Оказалось, в Opencart 2 на странице обратной связи (information/contact) письмо отсылается только на главный email (владельцу магазина). Если какие-то адреса для дополнительных оповещений в админке заполнены - здесь они всё равно игнорируются.
Это неудивительно, поскольку в опенкарт функционал дублируется. Здесь - тупо забыли про дополнительные адреса.
Чтобы исправить, надо открыть файл catalog/controller/information/contact.php
. В самой первой функции этого файла (public function index()
) будет виден кусок кода отправки почты:
$mail = new Mail($this->config->get('config_mail'));
$mail->setTo($this->config->get('config_email'));
$mail->setFrom($this->request->post['email']);
$mail->setSender($this->request->post['name']);
$mail->setSubject(sprintf($this->language->get('email_subject'), $this->request->post['name']));
$mail->setText(strip_tags($this->request->post['enquiry']));
$mail->send();
Сразу после него надо добавить несколько строк:
// Send additional alert emails
$emails = explode(',', $this->config->get('config_mail_alert'));
foreach ($emails as $email) {
$email = trim($email);
if ($email && preg_match('/^[^\@]+@.*.[a-z]{2,15}$/i', $email)) {
$mail->setTo($email);
$mail->send();
}
}
Теперь копии письма будут получать все администраторы магазина, перечисленные в поле дополнительных email-адресов (см. настройки магазина).
Совместимость
Приведённый код - из oc2011.
В oc2101/oc2102 кода чуть больше, но суть остаётся та же: добавлять после $mail->send();
и перед $this->response->...
.
Соответственно все версии, что между ними (oc2020, oc2031), лечатся аналогично. ocStore тоже.
Ocmod не писал, хотя наверное стоило бы - для тех, кто не хочет лазить по FTP и знает только админку. Если очень надо - напишите в комментарии, постараюсь найти время и выложить.