Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Gross1k

Recommended Posts

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

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

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах

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

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

Надіслати
Поділитися на інших сайтах


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

При попытке запустить оба скрипта, что 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 я имел ввиду платный ящик с доменным именем, но другого проекта.

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

Надіслати
Поділитися на інших сайтах


Ребята! Решил вопрос. Если у кого будет такая проблема, внимательно посмотрите 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.