ModX Evo (+Shopkeeper): Could not instantiate mail function
Некоторое время назад, нужно было поднять простейший интернет магазин на MODX Evo 1.0.13 + Shopkeeper. Проверив как все это работает в связке MODX Evo 1.0.6 + Shopkeeper, взялся за заполнение товаров. Но после обновления MODX до 1.0.13 Shopkeeper, при попытке оформить заказ выдавало ошибку: "Could not instantiate mail function". Ту же ошибку начало выдавать при попытке отправки через PHPMailer 5.2.6.
При этом, письма через простейшую фунцкию mail() (вызванную вне MODX) отправлялись стабильно. Стало понятно, что проблема в MODX'е, а письма в нем шлются через PHPMailer, а значит искать надо именно в нем. Поковырявшись в его файлах наткнулся на это:
/manager/includes/controls/phpmailer/class.phpmailer.php
строка 169:
/**
* Determine if mail() uses a fully sendmail compatible MTA that
* supports sendmail's "-oi -f" options
* @var boolean
*/
public $UseSendmailOptions = true;
По умолчанию, PHPMailer пытается использовать расширенные функции SendMail, который не установлен на моем хостинге. Решением проблемы, было изменение параметра:
public $UseSendmailOptions = false;
После этого все письма пошли как надо, и Shopkeeper тут же заработал. В интернете писали многое, большинство сообщений содержит требования к провайдеру, но все оказалось проще.
Контакты
Эл. почта: mail@lostangel.ru