Opencart 1.5 - исправить кодировку писем

Задание закрыто
Стоимость:2 000 рублей
Срок выполнения:2 дня
Варианты оплаты:По договоренности
Дата публикации:2025-01-30 19:36
Был(а) на сайте:2026-05-21 18:40

Opencart 1.5 - исправить кодировку писем

 
Задача

Письма с нашего сайта (о заказе, о поступлении товара и др.) отправляются через SMTP Яндекса. Сегодня все письма стали приходить без темы, т.е. тема письма внезапно стала пустая! Обратились в техподдержку Яндекса с этим и вот их ответ:

Добрый день Павел! Мы обновили правила по обработке заголовков писем. Теперь использовать кодировки UTF-8 нельзя. Рекомендуем формировать заголовки и тело писем в соответствии с RFC-стандартами (https://datatracker.ietf.org/doc/html/rfc5322#section-2.2), корректно обрабатывая и экранируя непечатные символы.

Нужна помощь поправить это на сайте. Полагаю, что поправить нужно будет файл system/library/mail.php, который прилагаю. Могу дать доступ к сайту. Обращаю внимание еще раз, отправка не через PHPMAIL а через SMTP.

Цену пишите вы, я не знаю насколько сложная проблема!

Оставлять заявки могут только авторизованные пользователи.
Здравствуйте!

Интересно.
Хочу разобраться.
Могу сделать
Евгений М
Основная специализация: Веб-разработка и IT
    Здравствуйте!
    Готов выполнить очень качественно ваш проект.
    Обширный опыт: API, PHP, JavaScript, Node.js, CSS...
    Программирование — WordPress, MODX, Bitrix, OpenCart, Laravel, и др.;
    Графический и интерфейсный дизайн: Adobe, Figma, Lunacy.
    Напишите мне, обсудим детали,
    С Уважением, Евгений.
    Основная специализация: Веб-разработка и IT
    в принципе уже вижу в вашем mail.php где поправить.
    можно попробовать и проверить сразу.
    пишите.
    Готов выполнить задание. Занимаюсь созданием и доработкой сайтов на OpenCart более 10 лет. Примеры моих работ см. в портфолио.
    Мои контакты:
    Телеграм: v21021
    Скайп: volma1803
    Здравствуйте!
    Я могу вам предложить:
    Логотип;
    Дизайн веб-сайта и мобильного приложения;
    Адаптивная CCS+JS вёрстка сайта;
    Крутой "Сайт под ключ";
    Программирование – WordPress, ModX, Bitrix, OpenCart, Drupal, и др.;
    Программирование очень сложных проектов – Django, Symfony, Laravel;
    Доработка и техподдержка проектов на любых фреймворках;
    Наполнение сайтов с погружением в тему;
    Разработка "под ключ" мобильных приложений;
    Продвижение и контекстная реклама с прозрачными отчётами за месяц.
    Здравствуйте.
    По факту нужен файл system/library/mail/smtp.php
    Но я посмотрел его на гитхабе, и могу сказать, что надо заменить 3 строчки в нем, а именно кодирование base64 на quoted-printable. То есть
    $header .= 'Subject: =?UTF-8?B?' . base64_encode($this->option['subject']) . '?=' . PHP_EOL;
    меняем на
    $header .= 'Subject: =?UTF-8?Q?' . quoted_printable_encode($this->option['subject']) . '?=' . PHP_EOL;

    и всё.
    аналогично можно поступить со строчками From и Reply-to.
    но если письма приходят только с пустой темой, а все остальное нормально, то можно и не трогать.
    Если сами не разберетесь, готов заняться.
    Илья Г.
    Основная специализация: Веб-разработка и IT
    День добрый, Павел.

    Помогу разобраться с проблемой. Качественно проверю решение. Детально опишу внесенные изменения.

    Для исправления ошибки понадобится доступ к серверу.

    С уважением, Илья.
    Доброго времени суток. Я mail.php поправил поставил метки, где изменил.
    Важно:
    1. Убедитесь, что на сервере включено расширение `mbstring`.
    2. Все входящие данные (темы, имена) должны быть в кодировке UTF-8.
    3. Для SMTP-отправки изменения не требуются — тема и имя отправителя уже закодированы корректно.

    Тестирование:
    После внесения правок проверьте отправку писем:
    - С кириллическими темами: `"Тестовый заказ №123"`
    - С спецсимволами: `"Ваш счет: 100$"`
    - С длинными темами (>75 символов).

    Темы должны отображаться корректно в почтовых клиентах.

    ТГ. @KuzyaevMaxim
    Что нужно сделать
    Изменение кодировки заголовков: Вам нужно убедиться, что заголовки формируются в соответствующей кодировке. Для этого можно использовать стандартные наборы символов (например, ASCII) и экранирование символов.

    Правки в mail.php: Если вы предполагаете, что нужно изменить файл system/library/mail.php, я бы рекомендовал внести следующие изменения:

    Убедиться, что заголовок Subject кодируется корректно согласно стандарту RFC 5322.
    Проверить, что нет непечатных символов в заголовках.
    Пример
    Вот модификация кода, которая может помочь:

    php
    public function setSubject($subject) {
    // Убираем возможные непечатные символы и скрытые символы
    $subject = $this->cleanSubject($subject);

    // Форматирование заголовка
    $this->headers[] = 'Subject: ' . $subject;
    }

    private function cleanSubject($subject) {
    // Удаляем непечатные символы
    return preg_replace('/[^\x20-\x7E]/', '', $subject);
    }
    Добрый день, не раз сталкивался с данной проблемой, готов помочь!
    андрей фролов
    Основная специализация: Обучение и Наставничество
    Предоставлю исправленный код

    Оставлять заявки могут только авторизованные пользователи.