Кривая логика отправки email при заказе в ядре OpenCart.

Ошибки при использовании модулей, установке и использовании опенкарта
AntonLark
Сообщения: 2
Зарегистрирован: 13.06.2023
Поблагодарил: 3 раз

Кривая логика отправки email при заказе в ядре OpenCart.

Непрочитанное сообщение AntonLark »

Здравствуйте!
Смущает следующая логика отправки Email:
1. В ванильном OpenCart при оформлении заказа происходит отправка сообщений двух сообщений: администратору и пользователю.
2. При этом это происходит последовательно, пока не будут отправлены письма пользователь не увидит страницу успешного оформления. Что вызывает торомоза после нажатия кнопки "Оформить заказ".
3. Если отправка почты не удалась, то покупатель увидит некрасивую ошибку - заказ не будет завершен.
Заказ не отобразится в админке. Попадет в oc_order со статусом 0 и не добавится в oc_order_history.
Это вызывает потерю заказов и клиентов при:
1. Пока сайт подключится к стороннему SMTP. (Google/Yandex/Mail)
- Тормоза у клиента при оформлении заказа.
2. Вдруг отвалился и некорректно работает SMTP сервер.
- Ошибка. Потеря заказа и клиента.
3. Поломался файрволл на стороне хостера или сервера. Порты 25 или 465 отвалились.
- Ошибка. Потеря заказа и клиента.
Решение из моих фантазий:
- Пользователь направляется на страницу успешного заказа сразу после добавления данных в oc_order. Запись oc_order_history тоже добавляется сразу.
- Отправка почты происходит в фоновом режиме уже после оформления.
- В случае если не получается отправить письмо по SMTP, после определенного таймаута происходит попытка отправить с помощью функции PHP.
*А можно еще выдавать статусы в истории заказа в зависимости от того как/когда был отправлен Email.

Существует ли что-то готовое на эту тему?
В сети
Аватара пользователя
DEVAGENCY
Разработчик дополнений
Сообщения: 42
Зарегистрирован: 03.04.2022
Откуда: Moscow
Мои дополнения: devagency
Поблагодарил: 9 раз
Спасибо: 5 раз
Контактная информация:

Re: Кривая логика отправки email при заказе в ядре OpenCart.

Непрочитанное сообщение DEVAGENCY »

Отправляйте через стандартный mail(), работает сразу, но если будут неправильно настроены параметры spf, dkim есть неплохой шанс что письма улетят в спам.

В паблике не встречалось модуля который организует очередь отправки писем.
Сказать "Спасибо" - деньги пойдут на развитие форума Liveopencart!
Телеграм — @devagency
Аватара пользователя
nikifalex
Разработчик дополнений
Сообщения: 315
Зарегистрирован: 17.03.2022
Откуда: Россия
Поблагодарил: 4 раз
Спасибо: 38 раз
Контактная информация:

Re: Кривая логика отправки email при заказе в ядре OpenCart.

Непрочитанное сообщение nikifalex »

AntonLark писал(а): 13 июн 2023, 21:08 Существует ли что-то готовое на эту тему?

Да, но только у меня в голове. Дорого.
ClayRabbit
Сообщения: 23
Зарегистрирован: 17.05.2022
Откуда: Тюмень
Спасибо: 6 раз
Контактная информация:

Re: Кривая логика отправки email при заказе в ядре OpenCart.

Непрочитанное сообщение ClayRabbit »

Проблема с ошибками SMTP решается так:

Код: Выделить всё

  <file path="system/library/mail.php"> 
    <!-- Catch SMTP errors -->
	<operation>
      <search><![CDATA[$this->adaptor->send();]]></search>
      <add position="replace"><![CDATA[
try {
  	$this->adaptor->send();
} catch (\Exception $e) {
	trigger_error('Error sending mail to ' . (is_array($this->to) ? implode(',', $this->to) : $this->to) . ':' . $e->getMessage(), E_USER_ERROR);
}
      ]]></add>
    </operation>
  </file>

Ответить