Заглушка рассылки e-mail для OpenCart (ocStore)
Очень часто на localhost не настроен mail/smtp сервер и OpenCart может выдавать ошибку, а иногда нет необходимости рассылать реальные письма во время разработки. Для удобства отладки рассылки писем достаточно внести небольшие изменения в файлы /system/library/mail/mail.php или /system/library/mail/smtp.php (в зависимости от того, как будете совершать в будущем рассылку).
В случае mail находим в районе 70х строк после завершения цикла foreach(){} строки $message .= ‘—‘ . $boundary . ‘—‘ . PHP_EOL; и ini_set(‘sendmail_from’, $this->from); и между ними добавляем
$message = str_replace("\r\n", "\n", $header . $message);
file_put_contents('ТУТ_ПУТЬ_ДО_ПАПКИ_ГДЕ_БУДЕМ_ХРАНИТЬ/mail.txt', $message);
return true;
Получается
$message .= '--' . $boundary . '--' . PHP_EOL;
$message = str_replace("\r\n", "\n", $header . $message);
file_put_contents('ТУТ_ПУТЬ_ДО_ПАПКИ_ГДЕ_БУДЕМ_ХРАНИТЬ/mail.txt', $message);
return true;
ini_set('sendmail_from', $this->from);
SMTP
В случае smtp находим в районе 80х строк после завершения цикла foreach(){} строки $message .= ‘—‘ . $boundary . ‘—‘ . PHP_EOL; и if (substr($this->smtp_hostname, 0, 3) == ‘tls’) { и между ними добавляем:
$message = str_replace("\r\n", "\n", $header . $message);
file_put_contents('ТУТ_ПУТЬ_ДО_ПАПКИ_ГДЕ_БУДЕМ_ХРАНИТЬ/mail.txt', $message);
return true;
Получается
$message .= '--' . $boundary . '--' . PHP_EOL;
$message = str_replace("\r\n", "\n", $header . $message);
file_put_contents('ТУТ_ПУТЬ_ДО_ПАПКИ_ГДЕ_БУДЕМ_ХРАНИТЬ/mail.txt', $message);
return true;
if (substr($this->smtp_hostname, 0, 3) == 'tls') {
Вместо «ТУТ_ПУТЬ_ДО_ПАПКИ_ГДЕ_БУДЕМ_ХРАНИТЬ» лучше добавить абсолютный путь, типа «www/mysiteru/», либо можно писать в папку с этими файлами, написав через суперконстанту __DIR__ (но это очень плохая практика) file_put_contents(__DIR__.’/mail.txt’, $message);
Данный код будет ВСЕГДА перезаписывать файл. Это удобно для быстрой отладки, открыв файл в редакторе, который будет обновляться при изменение. Но если надо дозаписывать файл, то в file_put_contents надо добавить флаг FILE_APPEND
file_put_contents('ТУТ_ПУТЬ_ДО_ПАПКИ_ГДЕ_БУДЕМ_ХРАНИТЬ/mail.txt', $message,FILE_APPEND);
PS Не забудьте вернуть всё как было при заливание на сервер/хостинг!