Перейти к содержанию
Форум поддержки пользователей VamShop

Ошибка при смене статуса в версии 1.84

   (0 отзывов)

Nexoos
  • Статус: Closed

Если отправка почты стоит в smtp, то при смене статуса у заказа (должна стоять галочка уведомить клиента)   ошибка

Fatal error: Class 'SMTP' not found in //includes/external/phpmailer/class.phpmailer.php on line 1521  

Решил грубым подключением class.smtp.php

В файле class.phpmailer.php

перед 

class PHPMailer

Вставляем 

require_once('class.smtp.php');

Обратная связь

Рекомендуемые комментарии

А если попробовать в /includes/application_top.php поменять:

require_once (DIR_WS_INCLUDES . 'external/phpmailer/class.phpmailer.php');
if (EMAIL_TRANSPORT == 'smtp')
	require_once (DIR_WS_INCLUDES . 'external/phpmailer/class.smtp.php');

на:

require_once (DIR_WS_INCLUDES . 'external/phpmailer/PHPMailerAutoload.php');
//if (EMAIL_TRANSPORT == 'smtp')
	//require_once (DIR_WS_INCLUDES . 'external/phpmailer/class.smtp.php');

 

Ссылка на комментарий
Поделиться на другие сайты

Увы нет та же ошибка.

Так происходит потому что в админке не используется файл  /includes/application_top.php

Там идет подключение в файле \admin\orders.php во второй строке 

require_once(DIR_FS_CATALOG.'includes/external/phpmailer/class.phpmailer.php');

Думаю лучше будет в class.phpmailer.php  подключать, мало ли в каких еще файлах такая конструкция.

Как вариант можно  в функции public function getSMTPInstance()

Добавить 

require_once('class.smtp.php');

чтобы загружать класс только когда он нужен.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, проверим.

Но править файлы библиотеки нельзя, т.к. всё слетит при обновлении этой библиотеки.

Посмотрим, просто наверное сделаем в /admin/orders.php по аналогии с тем как это в каталоге сделано.

Ссылка на комментарий
Поделиться на другие сайты

Наверное есть смысл сделать так же как в каталоге.

т.е. в /admin/includes/application_top.php добавить:

require_once (DIR_WS_INCLUDES . 'external/phpmailer/class.phpmailer.php');
if (EMAIL_TRANSPORT == 'smtp')
    require_once (DIR_WS_INCLUDES . 'external/phpmailer/class.smtp.php');


require_once (DIR_FS_INC.'vam_php_mail.inc.php');

Тогда, по идее, должно работать по всей админке, потому как application_top.php подключается в каждый файл.

Ссылка на комментарий
Поделиться на другие сайты

Я бы предложил сделать отдельный файл в папке inc с названием vam_include_phphmailer.inc.php

В нем производить все подключения.

во всех файлах где встречается 

require_once(DIR_FS_CATALOG.'includes/external/phpmailer/class.phpmailer.php');

убрать эту запись, а в  application_top.php добавить vam_include_phphmailer.inc.php

тогда при обновлении phpmailer нужно будет подправить только один файл если там изменятся названия классов.

 

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...