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

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

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

 
Задача

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

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

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

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

Оставлять заявки могут только авторизованные пользователи.
Алексей Orionyus
Основная специализация: Веб-разработка и Продуктовый дизайн
    Здравствуйте!

    Интересно.
    Хочу разобраться.
    Анатолий Артемов
    Основная специализация: Веб-разработка и Продуктовый дизайн
    Могу сделать
    Евгений М
    Основная специализация: Веб-разработка и Продуктовый дизайн
      Здравствуйте!
      Готов выполнить очень качественно ваш проект.
      Обширный опыт: API, PHP, JavaScript, Node.js, CSS...
      Программирование — WordPress, MODX, Bitrix, OpenCart, Laravel, и др.;
      Графический и интерфейсный дизайн: Adobe, Figma, Lunacy.
      Напишите мне, обсудим детали,
      С Уважением, Евгений.
      Основная специализация: ИТ и Разработка
      в принципе уже вижу в вашем 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.
        но если письма приходят только с пустой темой, а все остальное нормально, то можно и не трогать.
        Если сами не разберетесь, готов заняться.
        Илья Г.
        Основная специализация: Веб-разработка и Продуктовый дизайн
        День добрый, Павел.

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

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

        С уважением, Илья.
        Доброго времени суток. Я 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);
        }
        Добрый день, не раз сталкивался с данной проблемой, готов помочь!
        андрей фролов
        Основная специализация: Обучение и Образование
        Предоставлю исправленный код

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