[Помогите] Настройка почты

Тема в разделе "OpenCart", создана пользователем alter, 20 июл 2016.

Метки:
  1. alter

    alter

    Регистрация:
    24 мар 2014
    Сообщения:
    48
    Симпатии:
    8
    Столкнулся со следующми проблеммами:
    При выборе почтового протокола "Mail" во вкладке Настройки-Почта, отправляются письма и админу и заказчику с идентичной закодированной темой письма такого вида: =?UTF-8?B?SGF1Y2sta29seWFza2EgLSDQt9Cw0LrQsNC3IDU4?=
    При этом тело письма нормально отображается.
    Кто сталкивался с подобной проблемой? Как решить?

    Так же попробовал сменить на протокол SMTP, который у меня нормально работал до ноября 2015 года, после чего отказался отправлять письма, по неведомой мне причине. Но чуда не произошло и письма не отправляются. В логе выдаёт такую ошибку:
    PHP Warning: fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: unable to connect to ssl://smtp.yandex.ru:465 (Connection timed out) in /.............../system/library/mail.php on line 162
    Версия ocStore 1.5.5.1.2
    Ящик вида: [email protected]
    ssl://smtp.yandex.ru
    Порт: 465
    Таймаут: 5
     
  2. YoYo

    YoYo

    Регистрация:
    20 июл 2016
    Сообщения:
    121
    Симпатии:
    28
    Попробуйте найти $subject поиском по файлам:

    function mail_utf8($to, $from, $subject, $message)
    {
    $subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';

    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/plain; charset=utf-8\r\n";
    $headers .= "From: $from\r\n";

    return mail($to, $subject, $message, $headers);
    }

    // пример использования
    mail_utf8('[email protected]', '[email protected]', 'Заголовок сообщения', 'Текст сообщения');

    Или так:

    Надо поставить кодировку и саму тему закодировать функцией base64_encode()
    mail($mailto, "=?utf-8?B?".base64_encode($subject1)."?=", $body, $headers);
     
  3. alter

    alter

    Регистрация:
    24 мар 2014
    Сообщения:
    48
    Симпатии:
    8
    YoYo, спасибо! Но боюсь ваше решение не смогу реализовать, т.к. навыки программирования на уровне 0. По большей части использую копи-паст готовых решений.
     
  4. bloodlight

    bloodlight

    Регистрация:
    24 мар 2013
    Сообщения:
    46
    Симпатии:
    58
    Сделайте что бы письма отправлялись через smtp хостинга, а не яндекса,настройки возьмите у своего хостера.
     
  5. YoYo

    YoYo

    Регистрация:
    20 июл 2016
    Сообщения:
    121
    Симпатии:
    28
    Источник: https://opencartforum.com/topic/23861-решено-yandex-такой-yandex-не-отправляются-письма-выдает/
    Решение:
    Не дождался я ответа от яндекса, но проблему решил!!!
    Открыл исходник письма которое приходит с этого ящика и обратил внимание, что в поле From между ?= и < стоит пробел.

    Добавил пробел в 93-ей строке файла system/library/mail.php

    Было так:

    $header .= 'From: ' . '=?UTF-8?B?' . base64_encode($this->sender) . '?=' . '<' . $this->from . '>' . $this->newline;

    Стало вот так:

    $header .= 'From: ' . '=?UTF-8?B?' . base64_encode($this->sender) . '?= ' . '<' . $this->from . '>' . $this->newline;

    И все заработало!
     
    alter нравится это.
  6. alter

    alter

    Регистрация:
    24 мар 2014
    Сообщения:
    48
    Симпатии:
    8
    YoYo, не сработало