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

Livezilla он-лайн консультант, кодировка писем


Esox

Recommended Posts

Всем привет.

Понимаю, что он-лайн консультант Livezilla слабо имеет отношение к ocStore. Даже если установлен на нем. Но тем не менее, обратиться с вопросом мне более некуда. Поэтому прошу прощения за сию бестактность.

Проблема:

Когда консультант находится в режиме офлайн у него, как и у всех, есть функция отсылки письма на почту. Все отсылается но текст письма приходит в иероглифах. Ясен пень кодировка. Сам файл отвечающий за отсылку и прочее пробовал сохранять в различных кодировках в том числе и UTF-8 и другие типа KOI8-R, ничего не получается. Только меняются эти самые иероглифы, иногда похожи на кириллицу, иногда вообще на какие-то символы.

Самое интересное, что если просматривать эти приходящие письма в почтовом клиенте на андройде, то там все читается, а вот в аутлуке нет.

Вот сам файл:


/****************************************************************************************
* LiveZilla objects.mail.inc.php
*
* Copyright 2014 LiveZilla GmbH
* All rights reserved.
* LiveZilla is a registered trademark.
*
* Improper changes to this file may cause critical errors.
***************************************************************************************/

if(!defined("IN_LIVEZILLA"))
die();

class MailSystem
{
private $Account;
private $Receiver;
private $ReplyTo;
private $MailText;
private $Subject;
private $TestIt;
private $Attachments;
private $FakeSender;

public $Result = "";

function MailSystem($_account,$_receiver,$_replyto,$_text,$_subject="",$_test=false,$_attachments=null)
{
$this->Account = $_account;
$this->Receiver = $_receiver;
$this->ReplyTo = $_replyto;
$this->MailText = $_text;
$this->Subject = $_subject;
$this->TestIt = $_test;
$this->Attachments = $_attachments;
}

function SendEmail($_fakeSender="")
{
if($this->Account == null)
$this->Account=Mailbox::GetDefaultOutgoing();

if($this->Account == null)
return null;

$this->FakeSender = $_fakeSender;

if($this->Account->Type == "SMTP")
{
if($this->Account->Framework=="PHP_MAILER")
return false;
else
$this->Result = $this->SEND_SMTP_ZEND();
}
else if($this->Account->Type == "PHPMail")
{
$this->Result = $this->SEND_PHP_MAIL($this->Receiver);
}
}

private function SEND_SMTP_ZEND()
{
try
{
loadLibrary("ZEND","Zend_Mail");
loadLibrary("ZEND","Zend_Mail_Transport_Smtp");

if(empty($this->MailText))
$this->MailText = ">>";

if($this->Account->Authentication=="No")
$config = array('port' => $this->Account->Port);
else
$config = array('auth' => 'login', 'username' => $this->Account->Username,'password' => $this->Account->Password, 'port' => $this->Account->Port);

if(!empty($this->Account->SSL))
$config['ssl'] = ($this->Account->SSL==1) ? 'SSL' : 'TLS';

$transport = new Zend_Mail_Transport_Smtp($this->Account->Host, $config);

$mail = new Zend_Mail('KOI8-R');
//$mail->setHeaderEncoding ( Zend_Mime :: ENCODING_BASE64 ) ;
$mail->setBodyText($this->MailText);

if(empty($this->FakeSender))
$mail->setFrom($this->Account->Email, $this->Account->SenderName);
else
$mail->setFrom($this->FakeSender, $this->FakeSender);

if(strpos($this->Receiver,",") !== false)
{
$emails = explode(",",$this->Receiver);
$add = false;
foreach($emails as $mailrec)
if(!empty($mailrec))
if(!$add)
{
$add = true;
$mail->addTo($mailrec, $mailrec);
}
else
{
$mail->addBcc($mailrec, $mailrec);
}
}
else
$mail->addTo($this->Receiver, $this->Receiver);

$mail->setSubject($this->Subject);
$mail->setReplyTo($this->ReplyTo, $name=null);

if($this->Attachments != null)
foreach($this->Attachments as $resId)
{
$res = getResource($resId);
$at = $mail->createAttachment(file_get_contents("./uploads/" . $res["value"]));
$at->type = 'application/octet-stream';
$at->disposition = Zend_Mime::DISPOSITION_ATTACHMENT;
$at->encoding = Zend_Mime::ENCODING_BASE64;
$at->filename = $res["title"];
}
$mail->send($transport);
}
catch (Exception $e)
{
if($this->TestIt)
throw $e;
else
handleError("111",$this->Account->Host . " send mail connection error: " . $e->getMessage(),"functions.global.inc.php",0);
return 0;
}
return 1;
}

private function SEND_PHP_MAIL($_receiver="", $result = "")
{
if(strpos($_receiver,",") !== false)
{
$emails = explode(",",$_receiver);
foreach($emails as $mail)
if(!empty($mail))
$result = $this->SEND_PHP_MAIL(trim($mail), $result);
return $result;
}

$mailtext = $this->MailText;
$ehash = md5(date('r', time()));
$EOL = "\r\n";

if(empty($this->FakeSender))
$headers = "From: ".$this->Account->Email.$EOL;
else
$headers = "From: ".$this->FakeSender.$EOL;

$headers .= "Reply-To: ".$this->ReplyTo.$EOL;
$headers .= "Date: ".date("r").$EOL;
$headers .= "MIME-Version: 1.0".$EOL;
$headers .= "�������� ������� ������������ ������������";

if($this->Attachments != null)
{
$headers .= "Content-Type: multipart/mixed; boundary=\"".$ehash."\"".$EOL.$EOL;
$headers .= "--".$ehash.$EOL;
$headers .= "Content-Type: text/plain; charset=KOI8-R; format=flowed".$EOL;
$headers .= "Content-Transfer-Encoding: 8bit".$EOL.$EOL;
$headers .= $mailtext.$EOL.$EOL;
$headers .= "--".$ehash.$EOL;
foreach($this->Attachments as $resId)
{
$res = getResource($resId);
if($res==null)
continue;
$content = chunk_split(base64_encode(file_get_contents("./uploads/" . $res["value"])));
$headers .= "Content-Type: application/octet-stream; name=\"".$res["title"]."\"".$EOL;
$headers .= "Content-Transfer-Encoding: base64".$EOL;
$headers .= "Content-Disposition: attachment; filename=\"".$res["title"]."\"".$EOL.$EOL;
$headers .= $content.$EOL.$EOL;
$headers .= "--".$ehash.$EOL;
}
$mailtext="";
$headers .= "--".$ehash."--".$EOL;
}
else
{
//$headers .= "Content-Type: text/plain; charset=UTF-8; format=flowed".$EOL;
//$headers .= "Content-Transfer-Encoding: 8bit".$EOL.$EOL;
}

if(@mail($_receiver, $this->Subject, $mailtext, $headers))
return 1;
else
return "The email could not be sent using PHP mail(). Please try another Return Email Address or use SMTP.";
}
}


?>

 

Спасибо, если кто откликнется и пожет с решением проблемы.

 

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


Все файлы opencart, которые правите, сохранять исключительно в кодировке UTF-8 без BOM, никаких koi8-r. Используйте для редактирования Notepad++. Перед правкой на всякий случай создавайте копию исправляемого файла.

 

Конкретно в этом файле найдите и замените KOI8-R на UTF-8 (две замены должно получиться)

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

Изначально в этом файле(он Livezilla - ский) было только UTF-8 и сам он был UTF-8, не знаю правда с BOM или нет.

Я попробую все перевести в UTF-8 без BOM.

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


Ничего не меняется.

 

вот начало акцеса:

Options +FollowSymlinks

Options -Indexes


AddDefaultCharset UTF-8

<FilesMatch "\.(tpl|ini|log)">
 Order deny,allow
 Deny from all
</FilesMatch>

<Files vk_export_cron.php>
    Order Deny,Allow
    Deny from all
</Files>

RewriteEngine On

RewriteBase /

FileETag MTime Size

Вот в письме:

MIME-Version: 1.0

п°п╟пЁп╟п╥п╦п╫ п╪я┐п╥я▀п╨п╟п╩я▄п╫п╬пЁп╬ п╬п╠п╬я─я┐п╢п╬п╡п╟п╫п╦я▐Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi п≤п╡п╟п╫,


Thank you for getting in touch with us.


We have received your message and will be responding to your enquiry as soon as possible.


-------------------------------------------------------------
Date: Tue, 10 Feb 2015 17:58:25 +0300
-------------------------------------------------------------
Name: п≤п╡п╟п╫
Email:
Group: п п╬п╫я│я┐п╩я▄я┌п╟п╫я┌
Надіслати
Поділитися на інших сайтах


А в данный момент в файле именно так?

$headers .= "�������� ������� ������������ ������������";

В оригинальном файле что было? Если попробовать заменить?

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


Решил проблему переходом на SMTP вариант.

Встроенный PHPmail так и не удалось привести в чувства.

Не знаю, почему сразу так не сделал.

 

Для тех кто будет пользовать livezilla выбирайте сразу SMTP с авторизацией.

 

Strelez спасибо Вам большое за помощь.

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


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

×
×
  • Створити...

Important Information

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