Перейти к содержанию
Gross1k

[Решено] Тема письма =?UTF-8?B?= или =?UTF-8?B?0JLQvtC/0YDQvtGBOiBTd2lzc0RlbnQ=?=

Рекомендуемые сообщения

Добрый вечер, форумчане. Перерыл весь интернет, но дельного решения так и не нашел. Письма о новом заказе, клиенте приходят, но тема письма отображается некорректно. Помогите решить данную проблему, пожалуйста. Пользуюсь протоколом mail. Почта на яндексе.

Кину любую инфо по вашему запросу. Заранее благодарю!

Поделиться сообщением


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

Причиной может быть кодировка файлов отвечающих за отправку письма, в которые были внесены правки.

Поделиться сообщением


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

Причиной может быть кодировка файлов отвечающих за отправку письма, в которые были внесены правки.

Спасибо за ответ. Но вроде не вносил никаких правок в эти файлы (mail и order)... Если я сюда выложу, вы сможете посмотреть?

Поделиться сообщением


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

Все файлы сохранял в UTF-8 - это 100%

Поделиться сообщением


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

Вижу, что файлик полезный, но скачал, залил и в итоге белый экран((

Поделиться сообщением


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

Я дал  две ссылки.

Поделиться сообщением


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

Я дал  две ссылки.

При попытке запустить оба скрипта, что bomdel.php, что find_bom.php, ничего не происходит, просто белый экран. Либо я кривой, либо что-то, где-то не прописано(

c55f0c20edb1.png

Изменено пользователем Gross1k

Поделиться сообщением


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

Тогда вариант номер два.Удалить в папке vqmod/xml все вк моды связанные с изменением письма, скачать  дистрибутив с той же версией опенкарта что используется и заменить на дефолтные файлы.

 

PS Не забываем делать бэкап любых файлов с которыми производим какие либо манипуляции.

  Решения выше иногда выпадают в "белый лист" но при этом вносят нужные правки.Обязательно проверить проблему на данном этапе.А то может её уже давно нет.

Поделиться сообщением


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

Сейчас попробую, отпишусь о результате.

Увы, не помогло. Все такая же проблема с темой письма. У меня есть чувство, что проблема в mail.php. Если у вас есть настроение и возможность, посмотрите своим глазом, пож-ста

final class Mail {

protected $to;

protected $from;

protected $sender;

protected $subject;

protected $text;

protected $html;

protected $attachments = array();

public $protocol = 'mail';

public $hostname;

public $username;

public $password;

public $port = 25;

public $timeout = 5;

public $newline = "\r\n";

public $crlf = "\r\n";

public $verp = FALSE;

public $parameter = '';

public function setTo($to) {

$this->to = $to;

}

public function setFrom($from) {

$this->from = $from;

}

public function addheader($header, $value) {

$this->headers[$header] = $value;

}

public function setSender($sender) {

$this->sender = html_entity_decode($sender);

}

public function setSubject($subject) {

$this->subject= '=?UTF-8?B?' . base64_encode($subject) . '?=';

}

public function setText($text) {

$this->text = $text;

}

public function setHtml($html) {

$this->html = $html;

}

public function addAttachment($file, $filename = '') {

if (!$filename) {

$filename = basename($file);

}

$this->attachments[] = array(

'filename' => $filename,

'file' => $file

);

}

public function send() {

if (!$this->to) {

exit('Error: E-Mail to required!');

}

if (!$this->from) {

exit('Error: E-Mail from required!');

}

if (!$this->sender) {

exit('Error: E-Mail sender required!');

}

if (!$this->subject) {

exit('Error: E-Mail subject required!');

}

if ((!$this->text) && (!$this->html)) {

exit('Error: E-Mail message required!');

}

if (is_array($this->to)) {

$to = implode(',', $this->to);

} else {

$to = $this->to;

}

$boundary = '----=_NextPart_' . md5(time());

$header = '';

if ($this->protocol != 'mail') {

$header .= 'To: ' . $to . $this->newline;

$header .= 'Subject: ' . '=?UTF-8?B?' . base64_encode($this->subject) . '?=' . $this->newline;

}

$header .= 'Date: ' . date("D, d M Y H:i:s O") . $this->newline;

//$header .= 'From: "' . $this->sender . '" <' . $this->from . '>' . $this->newline;

//$header .= 'From: ' . $this->sender . '<' . $this->from . '>' . $this->newline;

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

$header .= 'Reply-To: ' . $this->sender . '<' . $this->from . '>' . $this->newline;

$header .= 'Return-Path: ' . $this->from . $this->newline;

$header .= 'X-Mailer: PHP/' . phpversion() . $this->newline;

$header .= 'MIME-Version: 1.0' . $this->newline;

$header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . $this->newline;

$header .= 'Content-Transfer-Encoding: 8bit' . $this->newline;

$header .= $this->newline;

if (!$this->html) {

$message = '--' . $boundary . $this->newline;

$message .= 'Content-Type: text/plain; charset="utf-8"' . $this->newline;

$message .= 'Content-Transfer-Encoding: 8bit' . $this->newline . $this->newline;

$message .= $this->text . $this->newline;

} else {

$message = '--' . $boundary . $this->newline;

$message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . $this->newline . $this->newline;

$message .= '--' . $boundary . '_alt' . $this->newline;

$message .= '' . $this->newline;

$message .= '' . $this->newline;

if ($this->text) {

$message .= $this->text . $this->newline;

} else {

$message .= '' . $this->newline;

}

$message .= '--' . $boundary . '_alt' . $this->newline;

$message .= 'Content-Type: text/html; charset="utf-8"' . $this->newline;

$message .= 'Content-Transfer-Encoding: 8bit' . $this->newline . $this->newline;

$message .= $this->html . $this->newline;

$message .= '--' . $boundary . '_alt--' . $this->newline;

}

foreach ($this->attachments as $attachment) {

if (file_exists($attachment['file'])) {

$handle = fopen($attachment['file'], 'r');

$content = fread($handle, filesize($attachment['file']));

fclose($handle);

$message .= '--' . $boundary . $this->newline;

$message .= 'Content-Type: application/octetstream' . $this->newline;

$message .= 'Content-Transfer-Encoding: base64' . $this->newline;

$message .= 'Content-Disposition: attachment; filename="' . basename($attachment['filename']) . '"' . $this->newline;

$message .= 'Content-ID: <' . basename($attachment['filename']) . '>' . $this->newline . $this->newline;

$message .= chunk_split(base64_encode($content));

}

}

$message .= '--' . $boundary . '--' . $this->newline;

if ($this->protocol == 'mail') {

ini_set('sendmail_from', $this->from);

if ($this->parameter) {

mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header, $this->parameter);

} else {

mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header);

}

} elseif ($this->protocol == 'smtp') {

$handle = fsockopen($this->hostname, $this->port, $errno, $errstr, $this->timeout);

if (!$handle) {

error_log('Error: ' . $errstr . ' (' . $errno . ')');

} else {

if (substr(PHP_OS, 0, 3) != 'WIN') {

socket_set_timeout($handle, $this->timeout, 0);

}

while ($line = fgets($handle, 515)) {

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($this->hostname, 0, 3) == 'tls') {

fputs($handle, 'STARTTLS' . $this->crlf);

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 220) {

error_log('Error: STARTTLS not accepted from server!');

}

}

if (!empty($this->username) && !empty($this->password)) {

fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

error_log('Error: EHLO not accepted from server!');

}

fputs($handle, 'AUTH LOGIN' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 334) {

error_log('Error: AUTH LOGIN not accepted from server!');

}

fputs($handle, base64_encode($this->username) . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 334) {

error_log('Error: Username not accepted from server!');

}

fputs($handle, base64_encode($this->password) . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 235) {

error_log('Error: Password not accepted from server!');

}

} else {

fputs($handle, 'HELO ' . getenv('SERVER_NAME') . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

error_log('Error: HELO not accepted from server!');

}

}

if ($this->verp) {

fputs($handle, 'MAIL FROM: <' . $this->username . '>XVERP' . $this->crlf);

} else {

fputs($handle, 'MAIL FROM: <' . $this->username . '>' . $this->crlf);

}

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

error_log('Error: MAIL FROM not accepted from server!');

}

if (!is_array($this->to)) {

fputs($handle, 'RCPT TO: <' . $this->to . '>' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {

error_log('Error: RCPT TO not accepted from server!');

}

} else {

foreach ($this->to as $recipient) {

fputs($handle, 'RCPT TO: <' . $recipient . '>' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {

error_log('Error: RCPT TO not accepted from server!');

}

}

}

fputs($handle, 'DATA' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 354) {

error_log('Error: DATA not accepted from server!');

}

fputs($handle, $header . $message . $this->crlf);

fputs($handle, '.' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

error_log('Error: DATA not accepted from server!');

}

fputs($handle, 'QUIT' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 221) {

error_log('Error: QUIT not accepted from server!');

}

fclose($handle);

}

}

}

}

?>

Поделиться сообщением


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

Сейчас попробую, отпишусь о результате.

Увы, не помогло. Все такая же проблема с темой письма. У меня есть чувство, что проблема в mail.php. Если у вас есть настроение и возможность, посмотрите своим глазом, пож-ста

final class Mail {

protected $to;

protected $from;

protected $sender;

protected $subject;

protected $text;

protected $html;

protected $attachments = array();

public $protocol = 'mail';

public $hostname;

public $username;

public $password;

public $port = 25;

public $timeout = 5;

public $newline = "\r\n";

public $crlf = "\r\n";

public $verp = FALSE;

public $parameter = '';

public function setTo($to) {

$this->to = $to;

}

public function setFrom($from) {

$this->from = $from;

}

public function addheader($header, $value) {

$this->headers[$header] = $value;

}

public function setSender($sender) {

$this->sender = html_entity_decode($sender);

}

public function setSubject($subject) {

$this->subject= '=?UTF-8?B?' . base64_encode($subject) . '?=';

}

public function setText($text) {

$this->text = $text;

}

public function setHtml($html) {

$this->html = $html;

}

public function addAttachment($file, $filename = '') {

if (!$filename) {

$filename = basename($file);

}

$this->attachments[] = array(

'filename' => $filename,

'file' => $file

);

}

public function send() {

if (!$this->to) {

exit('Error: E-Mail to required!');

}

if (!$this->from) {

exit('Error: E-Mail from required!');

}

if (!$this->sender) {

exit('Error: E-Mail sender required!');

}

if (!$this->subject) {

exit('Error: E-Mail subject required!');

}

if ((!$this->text) && (!$this->html)) {

exit('Error: E-Mail message required!');

}

if (is_array($this->to)) {

$to = implode(',', $this->to);

} else {

$to = $this->to;

}

$boundary = '----=_NextPart_' . md5(time());

$header = '';

if ($this->protocol != 'mail') {

$header .= 'To: ' . $to . $this->newline;

$header .= 'Subject: ' . '=?UTF-8?B?' . base64_encode($this->subject) . '?=' . $this->newline;

}

$header .= 'Date: ' . date("D, d M Y H:i:s O") . $this->newline;

//$header .= 'From: "' . $this->sender . '" <' . $this->from . '>' . $this->newline;

//$header .= 'From: ' . $this->sender . '<' . $this->from . '>' . $this->newline;

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

$header .= 'Reply-To: ' . $this->sender . '<' . $this->from . '>' . $this->newline;

$header .= 'Return-Path: ' . $this->from . $this->newline;

$header .= 'X-Mailer: PHP/' . phpversion() . $this->newline;

$header .= 'MIME-Version: 1.0' . $this->newline;

$header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . $this->newline;

$header .= 'Content-Transfer-Encoding: 8bit' . $this->newline;

$header .= $this->newline;

if (!$this->html) {

$message = '--' . $boundary . $this->newline;

$message .= 'Content-Type: text/plain; charset="utf-8"' . $this->newline;

$message .= 'Content-Transfer-Encoding: 8bit' . $this->newline . $this->newline;

$message .= $this->text . $this->newline;

} else {

$message = '--' . $boundary . $this->newline;

$message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . $this->newline . $this->newline;

$message .= '--' . $boundary . '_alt' . $this->newline;

$message .= '' . $this->newline;

$message .= '' . $this->newline;

if ($this->text) {

$message .= $this->text . $this->newline;

} else {

$message .= '' . $this->newline;

}

$message .= '--' . $boundary . '_alt' . $this->newline;

$message .= 'Content-Type: text/html; charset="utf-8"' . $this->newline;

$message .= 'Content-Transfer-Encoding: 8bit' . $this->newline . $this->newline;

$message .= $this->html . $this->newline;

$message .= '--' . $boundary . '_alt--' . $this->newline;

}

foreach ($this->attachments as $attachment) {

if (file_exists($attachment['file'])) {

$handle = fopen($attachment['file'], 'r');

$content = fread($handle, filesize($attachment['file']));

fclose($handle);

$message .= '--' . $boundary . $this->newline;

$message .= 'Content-Type: application/octetstream' . $this->newline;

$message .= 'Content-Transfer-Encoding: base64' . $this->newline;

$message .= 'Content-Disposition: attachment; filename="' . basename($attachment['filename']) . '"' . $this->newline;

$message .= 'Content-ID: <' . basename($attachment['filename']) . '>' . $this->newline . $this->newline;

$message .= chunk_split(base64_encode($content));

}

}

$message .= '--' . $boundary . '--' . $this->newline;

if ($this->protocol == 'mail') {

ini_set('sendmail_from', $this->from);

if ($this->parameter) {

mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header, $this->parameter);

} else {

mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header);

}

} elseif ($this->protocol == 'smtp') {

$handle = fsockopen($this->hostname, $this->port, $errno, $errstr, $this->timeout);

if (!$handle) {

error_log('Error: ' . $errstr . ' (' . $errno . ')');

} else {

if (substr(PHP_OS, 0, 3) != 'WIN') {

socket_set_timeout($handle, $this->timeout, 0);

}

while ($line = fgets($handle, 515)) {

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($this->hostname, 0, 3) == 'tls') {

fputs($handle, 'STARTTLS' . $this->crlf);

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 220) {

error_log('Error: STARTTLS not accepted from server!');

}

}

if (!empty($this->username) && !empty($this->password)) {

fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

error_log('Error: EHLO not accepted from server!');

}

fputs($handle, 'AUTH LOGIN' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 334) {

error_log('Error: AUTH LOGIN not accepted from server!');

}

fputs($handle, base64_encode($this->username) . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 334) {

error_log('Error: Username not accepted from server!');

}

fputs($handle, base64_encode($this->password) . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 235) {

error_log('Error: Password not accepted from server!');

}

} else {

fputs($handle, 'HELO ' . getenv('SERVER_NAME') . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

error_log('Error: HELO not accepted from server!');

}

}

if ($this->verp) {

fputs($handle, 'MAIL FROM: <' . $this->username . '>XVERP' . $this->crlf);

} else {

fputs($handle, 'MAIL FROM: <' . $this->username . '>' . $this->crlf);

}

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

error_log('Error: MAIL FROM not accepted from server!');

}

if (!is_array($this->to)) {

fputs($handle, 'RCPT TO: <' . $this->to . '>' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {

error_log('Error: RCPT TO not accepted from server!');

}

} else {

foreach ($this->to as $recipient) {

fputs($handle, 'RCPT TO: <' . $recipient . '>' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {

error_log('Error: RCPT TO not accepted from server!');

}

}

}

fputs($handle, 'DATA' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 354) {

error_log('Error: DATA not accepted from server!');

}

fputs($handle, $header . $message . $this->crlf);

fputs($handle, '.' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

error_log('Error: DATA not accepted from server!');

}

fputs($handle, 'QUIT' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 221) {

error_log('Error: QUIT not accepted from server!');

}

fclose($handle);

}

}

}

}

?>

Наличие BOM проверил и ничего не обнаружено

Поделиться сообщением


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

идти методом перебора

пробовать вместо почты на яндексе указать другой ящик

вообще не понимаю - нафига покупать домен, размещать магазин на хостинге, и при этом использовать халявный сторонний ящик :ugeek:

 

пробовать заменить файлы

catalog\model\checkout\order.php

system\library\mail.php

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

 

сравнивать эти ваши файлы с оригинальными, ищите отличия в subject

Поделиться сообщением


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

идти методом перебора

пробовать вместо почты на яндексе указать другой ящик

вообще не понимаю - нафига покупать домен, размещать магазин на хостинге, и при этом использовать халявный сторонний ящик :ugeek:

 

пробовать заменить файлы

catalog\model\checkout\order.php

system\library\mail.php

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

 

сравнивать эти ваши файлы с оригинальными, ищите отличия в subject

Добрый день.

Пробовал другие ящики, правда бесплатные. Сегодня опробую платный, а-ля Gmail. 

Вы думаете, что проблема в самом ящике, а не в коде? 

А вот за эту идею спасибо, с работы вернусь, займусь.

Поделиться сообщением


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

я про то, что даже если проблема не в ящике/почтовом сервере - все равно стоит использовать одноименное с доменом магазина имя, а не сторонний сервис

гораздо больше доверия, когда после заказа приходит письмо с ящика info@домен_магазина, а не с фиг-знает-что-за-имя@mail.ru или подобного ;)

Поделиться сообщением


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

я про то, что даже если проблема не в ящике/почтовом сервере - все равно стоит использовать одноименное с доменом магазина имя, а не сторонний сервис

гораздо больше доверия, когда после заказа приходит письмо с ящика info@домен_магазина, а не с фиг-знает-что-за-имя@mail.ru или подобного ;)

Ну это понятно=) Если быть точным, то мой ящик имеет доменное имя. 

***@grossmall.ru

Про эти вещи я знаю давно и всегда сужу по себе, потому что когда вижу почту компании а-ля ***@mail.ru, gmail и т.д., то доверие пропадает. А по поводу G-mail я имел ввиду платный ящик с доменным именем, но другого проекта.

С Наступающим Новым Годом!

Поделиться сообщением


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

Я напряг Сп Рег Ру, они провели тесты, в итоге печальная весть - "Обратитесь к разработчику сайта" - т.е. к самому себе :D

d0d6f9c2396d.png

Поделиться сообщением


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

Ребята! Решил вопрос. Если у кого будет такая проблема, внимательно посмотрите mail.php в system/library/. 

В 37-39 строках намутил черт знает что.

Вот как было:

public function setSubject($subject) {

$this->subject = '=?UTF-8?B?' . base64_encode($subject) . '?='; 

}

 

Вот на что исправил:

public function setSubject($subject) {
$this->subject = $subject;
}

 

Том и Алекс, спасибо за суету, навели на верные мысли :)

Поделиться сообщением


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

верни, как было.

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

если оно "мешает" - у тебя неправильная кодировка где-то ползет.

проверь все свои файлы; особенно те, что касаются заказов (*/checkout/*, и особенно - языковые) - всё должно быть в utf8.

еще может быть такое, что сервер(а) при проверках на спам/вирусы портят заголовки и кодировку.

Поделиться сообщением


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

верни, как было.

..

еще может быть такое, что сервер(а) при проверках на спам/вирусы портят заголовки и кодировку.

скорей всего последний вариант

 

точно не скажу, в деревне сейчас - но по памяти, то ли в 1.5.х, то ли в 2х (а возможно и в обоих) это в оригиналах:

$this->subject = $subject;

 

Поделиться сообщением


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

верни, как было.

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

Поделиться сообщением


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

верни, как было.

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

если оно "мешает" - у тебя неправильная кодировка где-то ползет.

проверь все свои файлы; особенно те, что касаются заказов (*/checkout/*, и особенно - языковые) - всё должно быть в utf8.

еще может быть такое, что сервер(а) при проверках на спам/вирусы портят заголовки и кодировку.

В кодировке проблем не обнаружено. Проверил файлы на БОМ, проверил скриптом - ничего не обнаружено, ошибка в коде - однозначно. Утверждать точно не смогу, потому что опыт работы с opencart и созданиями сайтов - полтора месяца, но логика подсказывает. 

Дело в том, что по неопытности, когда еще сайт был на локальном хостинге, не отправлялись письма, поэтому я стал мудрить с кодом (спасибо разным форумам, ресурсам и моему энтузиазму). Видимо перемудренный вариант закинул на сервер, отсюда начались проблемы. До совета Алекса начал спонтанно читать иностранные форумы и ву-аля, нашел правильное отображение $subject. Похимичил и тут все наладилось. 

Для успокоения души заново скачал клиент OcStore, проверил оригинальный mail.php и там ровно также, как "я исправил" (Алекс - ты прав). Теперь хоть душа спокойна :)

P.S у меня OcStore 1.5.5.1.2

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.