Hello glpi-dev team!
I have found bug in 0.72.4.
After applying my patch for decoding email, previous decoding mechanism also
recode some emails.

First decoding occur in mailgate.class.php in function get_part at

if (count($structure->parameters)>0){
                                  foreach ($structure->parameters as
$param){
                                    if
((strtoupper($param->attribute)=='CHARSET') &&
function_exists('mb_convert_encoding') && strtoupper($param->value) !=
'UTF-8'){
                                       $text = mb_convert_encoding($text,
'utf-8',$param->value); // <<<<<first decoding
                                       }
                                   }
                                }

and second in same file in function buildTicket at

                $body=$this->getBody($i);


                // Do it before using charset variable
                $head['subject']=$this->decodeMimeString($head['subject']);

                if
(!empty($this->charset)&&function_exists('mb_convert_encoding')){
                        $body=mb_convert_encoding($body,
'utf-8',$this->charset); //<<<<<<<second recoding
                }

because $this->charset filled from headers.
in attach patch for glpi 0.72.4 it add boolean variable "body_converted" to
check decoding state.
and second attached file, it is email with problem present.
Return-path: <g...@somedomain.by>
Received: from LocalHost by mail.somedomain.by
        (MDaemon PRO v9.6.1)
        with ESMTP id md50000692591.msg
        for <g...@somedomain.by>; Wed, 28 Apr 2010 13:44:31 +0300
Authentication-Results: mail.somedomain.by
        smtp.mail=g...@somedomain.by; auth=pass (g...@somedomain.by)
Authentication-Results: mail.somedomain.by
        smtp.helo=LocalHost; ip-match=fail
From: "glpi" <g...@somedomain.by>
To: <g...@somedomain.by>
Subject: =?koi8-r?B?wdXUzNXLwTc=?=
Date: Wed, 28 Apr 2010 14:41:19 +0400
MIME-Version: 1.0
Content-Type: multipart/alternative;
        boundary="----=_NextPart_000_0017_01CAE6E0.DDC3A610"
X-Mailer: Microsoft Office Outlook, Build 11.0.5510
Thread-Index: Acrmv1YBpXqt/5YbRk+7QVpPTaEd4w==
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512
X-Authenticated-Sender: g...@somedomain.by
X-Spam-Processed: mail.somedomain.by, Wed, 28 Apr 2010 13:44:31 +0300
        (not processed: message from valid local sender)
X-Lookup-Warning: EHLO lookup on LocalHost does not match 1.2.3.4
X-Rcpt-To: g...@somedomain.by
X-MDRcpt-To: g...@somedomain.by
X-Return-Path: g...@somedomain.by
X-Envelope-From: g...@somedomain.by
X-MDaemon-Deliver-To: g...@somedomain.by


This is a multi-part message in MIME format.

------=_NextPart_000_0017_01CAE6E0.DDC3A610
Content-Type: text/plain;
        charset="koi8-r"
Content-Transfer-Encoding: base64

4dXUzNXLwTcNCg0K

------=_NextPart_000_0017_01CAE6E0.DDC3A610
Content-Type: text/html;
        charset="koi8-r"
Content-Transfer-Encoding: quoted-printable

<html xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns=3D"http://www.w3.org/TR/REC-html40";>

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dkoi8-r">
<meta name=3DGenerator content=3D"Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=3DRU link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>=E1=D5=D4=CC=D5=CB=C17<o:p></o:p></span></font></p>

</div>

</body>

</html>

------=_NextPart_000_0017_01CAE6E0.DDC3A610--


--- ./mailgate.class.php.old	2010-03-02 11:06:00.000000000 +0300
+++ ./mailgate.class.php	2010-04-28 14:46:58.000000000 +0400
@@ -195,6 +195,8 @@
 	var $addtobody; 
 	/// Number of ferchs emails
 	var $fetch_emails=0;
+	/// Body converted 
+	var $body_converted=false;
 
 	/**
 	* Constructor
@@ -316,7 +318,7 @@
 		// Do it before using charset variable
 		$head['subject']=$this->decodeMimeString($head['subject']);
 
-		if (!empty($this->charset)&&function_exists('mb_convert_encoding')){
+		if (!$this->body_converted&&!empty($this->charset)&&function_exists('mb_convert_encoding')){
 			$body=mb_convert_encoding($body, 'utf-8',$this->charset);
 		}
 		if (!seems_utf8($body)){
@@ -589,6 +591,7 @@
    				  foreach ($structure->parameters as $param){ 
 				    if ((strtoupper($param->attribute)=='CHARSET') && function_exists('mb_convert_encoding') && strtoupper($param->value) != 'UTF-8'){ 
                                        $text = mb_convert_encoding($text, 'utf-8',$param->value); 
+				       $this->body_converted=true;
                                        } 
                                    } 
                                 } 
_______________________________________________
Glpi-dev mailing list
Glpi-dev@gna.org
https://mail.gna.org/listinfo/glpi-dev

Reply via email to