У меня не работает модуль отправки email от Mandrill, причем судя по логам он даже не вызывается.

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
  • Тема закрыта
#1 Егор Овчаренко
  • Группа: Клиент
  • Сообщений: 19
  • Регистрация: 20.10.2014

23.10.2014 10:03

Отправляет емейл, очень удобный. Перестали уходить емейл при заказе после обновления. В логах модуля все ок, но нет сообщений во время заказов, такое ощущение что он не вызывается просто. Через контактную форму тоже сообщения уходят. А вот при заказе - нет.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

23.10.2014 10:08

В первую очередь надо узнать, что в системе имеются журналы сбоев, включить запись в них (если не включена), удалить журналы, воспроизвести отклонение поведения системы от ожидаемого, проанализировать содержимое журналов, выявить записи, имеющие отношение конкретно к данной проблеме, опубликовать их в проблемной теме.

#3 Егор Овчаренко
  • Группа: Клиент
  • Сообщений: 19
  • Регистрация: 20.10.2014

23.10.2014 10:13

Да, в журнале ошибок есть во время заказа такой текст:

2014-10-23T09:02:42+04:00:
exception 'Exception' with message 'Notice: Undefined offset: 0  in /var/www/allshellac.ru/lib/Mandrill/Message.php on line 190' in /var/www/allshellac.ru/app/code/core/Mage/Core/functions.php
:245
Stack trace:
#0 /var/www/allshellac.ru/lib/Mandrill/Message.php(190): mageCoreErrorHandler(8, 'Undefined offse...', '/var/www/allshe...', 190, Array)
#1 /var/www/allshellac.ru/app/code/community/Ebizmarts/Mandrill/Model/Email/Template.php(73): Mandrill_Message->getHeaders()
#2 /var/www/allshellac.ru/app/code/core/Mage/Core/Model/Email/Template.php(506): Ebizmarts_Mandrill_Model_Email_Template->send(Array, Array, Array)
#3 /var/www/allshellac.ru/app/code/core/Mage/Core/Model/Email/Template/Mailer.php(79): Mage_Core_Model_Email_Template->sendTransactional('customer_create...', 'general', Array, Array, Array, '
1')
#4 /var/www/allshellac.ru/app/code/core/Mage/Customer/Model/Customer.php(676): Mage_Core_Model_Email_Template_Mailer->send()
#5 /var/www/allshellac.ru/app/code/core/Mage/Customer/Model/Customer.php(603): Mage_Customer_Model_Customer->_sendEmailTemplate('customer/create...', 'customer/create...', Array, '1')
#6 /var/www/allshellac.ru/app/code/core/Mage/Checkout/Model/Type/Onepage.php(756): Mage_Customer_Model_Customer->sendNewAccountEmail('registered', '', '1')
#7 /var/www/allshellac.ru/app/code/core/Mage/Checkout/Model/Type/Onepage.php(789): Mage_Checkout_Model_Type_Onepage->_involveNewCustomer()
#8 /var/www/allshellac.ru/app/code/core/Mage/Checkout/controllers/OnepageController.php(579): Mage_Checkout_Model_Type_Onepage->saveOrder()
#9 /var/www/allshellac.ru/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Checkout_OnepageController->saveOrderAction()
#10 /var/www/allshellac.ru/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('saveOrder')
#11 /var/www/allshellac.ru/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#12 /var/www/allshellac.ru/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#13 /var/www/allshellac.ru/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#14 /var/www/allshellac.ru/index.php(87): Mage::run('', 'store')
#15 {main}
2014-10-23T09:02:42+04:00:
exception 'Exception' with message 'Notice: Undefined offset: 0  in /var/www/allshellac.ru/lib/Mandrill/Message.php on line 190' in /var/www/allshellac.ru/app/code/core/Mage/Core/functions.php
:245
Stack trace:
#0 /var/www/allshellac.ru/lib/Mandrill/Message.php(190): mageCoreErrorHandler(8, 'Undefined offse...', '/var/www/allshe...', 190, Array)
#1 /var/www/allshellac.ru/app/code/community/Ebizmarts/Mandrill/Model/Email/Template.php(73): Mandrill_Message->getHeaders()
#2 /var/www/allshellac.ru/app/code/core/Mage/Core/Model/Email/Template.php(506): Ebizmarts_Mandrill_Model_Email_Template->send(Array, Array, Array)
#3 /var/www/allshellac.ru/app/code/core/Mage/Core/Model/Email/Template/Mailer.php(79): Mage_Core_Model_Email_Template->sendTransactional('sales_email_ord...', 'sales', Array, Array, Array, '1'
)
#4 /var/www/allshellac.ru/app/code/core/Mage/Sales/Model/Order.php(1340): Mage_Core_Model_Email_Template_Mailer->send()
#5 /var/www/allshellac.ru/app/code/core/Mage/Checkout/Model/Type/Onepage.php(814): Mage_Sales_Model_Order->sendNewOrderEmail()
#6 /var/www/allshellac.ru/app/code/core/Mage/Checkout/controllers/OnepageController.php(579): Mage_Checkout_Model_Type_Onepage->saveOrder()
#7 /var/www/allshellac.ru/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Checkout_OnepageController->saveOrderAction()
#8 /var/www/allshellac.ru/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('saveOrder')
#9 /var/www/allshellac.ru/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#10 /var/www/allshellac.ru/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#11 /var/www/allshellac.ru/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#12 /var/www/allshellac.ru/index.php(87): Mage::run('', 'store')
#13 {main}



#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

23.10.2014 10:21

Сообщение "notice: undefined offset" означает, что программист модуля Ebizmarts Mandrill любит и считает правильным обращаться к несуществующим элементам своих массивов. У интерпретатора PHP по данному вопросу имеется своя точка зрения, отличная от точки зрения программиста модуля Ebizmarts Mandrill. Я рекомендую склониться к точке зрения интерпретатора PHP, открыть указанный им файл на указанной им строке и привести эту строку к заложенной в интерпретатор PHP спецификации языка PHP.
Затем повторить то, что я написал в сообщении выше, и так по кругу, пока проблема не будет устранена.

#5 Егор Овчаренко
  • Группа: Клиент
  • Сообщений: 19
  • Регистрация: 20.10.2014

23.10.2014 10:33

Строчка 190 - это
return $this->_headers[0];

в такой функции:
public function getHeaders()
    {
        return $this->_headers[0];
    }


Я понимаю что поддержка сторонних модулей не входит в круг тем, которые здесь обсуждаются, но тем не менее модуль перестал работать именно после установки Русской сборки, поэтому хотелось бы понять, в чем может заключаться ошибка. Может после установки перестали заголовки передаваться?

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

23.10.2014 10:50

Российская сборка Magento, в отличие от Magento Community Edition и Magento Enterprise Edition, обладает способностью к ранней диагностике проблем.
Ранняя диагностика проблем значительно снижает владельцу магазина стоимость сопровождения магазина.

Если в обычном окружении Magento Community Edition бесплатно скачанный модуль для отправки писем, написанный студентом в свободное от учёбы время, как ни в чём не бывало будет обращаться по несуществующим адресам массива, то система может ничего не сказать и продолжить работу. При этом в одних случаях письма будут успешно отправлены, а в других крупный клиент может не получить важное письмо.

Российская сборка Magento широко использует раннюю диагностику, сразу останавливая выполнение дефектного кода и обращая на него внимание администратора магазина. Это значительно снижает затраты владельца магазина на сопровождение магазина, потому что замаскированные ранее дефекты выявляются сразу, в явном виде. При отсутствии ранней диагностики оплаченный владельцем магазина технический специалист может часами проводить диагностику за счёт владельца магазина, причём не на этапе разработки магазина, а на этапе промышленной эксплуатации, когда замаскированный дефект себя проявит.

#7 Егор Овчаренко
  • Группа: Клиент
  • Сообщений: 19
  • Регистрация: 20.10.2014

23.10.2014 10:55

Может быть, но сейчас мы наблюдаем обратную ситуацию.

Как отключить раннюю диагностику для этого модуля?

#8 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

23.10.2014 10:57

Никак, потому что это привело бы к значительному повышению стоимости диагностики и, следовательно, пересмотру тарифов на техническую поддержку Российской сборки Magento.
Именно благодаря ранней диагностики стоимость сопровождения Российской сборки Magento так невысока по сравнению с Magento Community Edition.

#9 Егор Овчаренко
  • Группа: Клиент
  • Сообщений: 19
  • Регистрация: 20.10.2014

23.10.2014 11:05

Тогда вопрос, я правильно понимаю что система выдает notice и warning, а русская сборка думает, что это Exception?

exception 'Exception' with message 'Notice: Undefined offset: 0  in /var/www/allshellac.ru/lib/Mandrill/Message.php on line 190'


и

exception 'Exception' with message 'Warning: json_encode(): type is unsupported, encoded as null  in /var/www/allshellac.ru/lib/Mandrill/Mandrill.php on line 119'


#10 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

23.10.2014 11:09

Все данные диагностические сообщения соответствуют нарушениям сторонними программистами специаикаций языка PHP.
Как обращение к несуществующему элементу массива, так и кодирование посредством JSON переменных неподдерживаемого этим кодировщиком типа свидетельствует о замаскированных проблемах в некачественном стороннем программном коде, и эти проблемы могут иметь далеко идущие последствия. Далеко неочевидно, что, обращаясь к несуществующему элементу массива или кодируя посредством JSON некий мусор, система будет работать правильно и устойчиво хотя бы в течение года. Скорее, наоборот: эти дефекты рано или поздно проявят себя при некотором контексте.
Все эти нарушения надо устранять.

#11 Егор Овчаренко
  • Группа: Клиент
  • Сообщений: 19
  • Регистрация: 20.10.2014

23.10.2014 11:12

Тогда откройте диагностическую консоль Android и посмотрите, сколько warning и даже error'ов там В СЕКУНДУ прилетает по системным приложениям и ядру. И ничего, работает очень стабильно.

В любом случае, как это поведение отключить? Трактовать warning как error еще более неправильно. Скажите хотя бы в каком файле посмотреть, попробую сам исправить.

#12 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

23.10.2014 11:13

На оба данных вопроса я уже дал ответ выше.
Тема закрыта.

Поделиться темой: