lib/kolab_sync_message.php tests/message.php tests/src

Aleksander Machniak machniak at kolabsys.com
Thu Feb 6 15:56:45 CET 2014


 lib/kolab_sync_message.php |    6 ++---
 tests/message.php          |   13 ++++++++++++
 tests/src/mail.recode2.out |    2 -
 tests/src/mail.recode4     |   47 +++++++++++++++++++++++++++++++++++++++++++++
 tests/src/mail.recode4.out |   43 +++++++++++++++++++++++++++++++++++++++++
 5 files changed, 106 insertions(+), 5 deletions(-)

New commits:
commit 2c349189dfe84d4a4c171ba24a02725a75c3d4b4
Author: Aleksander Machniak <alec at alec.pl>
Date:   Thu Feb 6 15:55:57 2014 +0100

    Fix issues in recode_message() - wrong boundaries handling

diff --git a/lib/kolab_sync_message.php b/lib/kolab_sync_message.php
index 77892ee..c8b0a47 100644
--- a/lib/kolab_sync_message.php
+++ b/lib/kolab_sync_message.php
@@ -313,15 +313,15 @@ class kolab_sync_message
         $hdrs = self::parse_headers($headers);
 
         // multipart message
-        if (preg_match('/boundary="?([a-z0-9-_]+)"?/i', $hdrs['Content-Type'], $matches)) {
+        if (preg_match('/boundary="?([a-z0-9-\'\(\)+_\,\.\/:=\? ]+)"?/i', $hdrs['Content-Type'], $matches)) {
             $boundary = '--' . $matches[1];
             $message  = explode($boundary, $message);
 
             for ($x=1, $parts = count($message) - 1; $x<$parts; $x++) {
-                $message[$x] = "\r\n" . self::recode_message($message[$x]);
+                $message[$x] = "\r\n" . self::recode_message(ltrim($message[$x]));
             }
 
-            return $headers . "\r\n\r\n" . implode($boundary, $message);
+            return $headers . "\r\n\r\n" . implode($boundary , $message);
         }
 
         // single part
diff --git a/tests/message.php b/tests/message.php
index 19e1901..a49c5d1 100644
--- a/tests/message.php
+++ b/tests/message.php
@@ -135,4 +135,17 @@ class message extends PHPUnit_Framework_TestCase
 
         $this->assertEquals($result, $message);
     }
+
+    /**
+     * Test recoding the message
+     */
+    function test_recode_message_4()
+    {
+        $source = file_get_contents(TESTS_DIR . '/src/mail.recode4');
+        $result = file_get_contents(TESTS_DIR . '/src/mail.recode4.out');
+
+        $message = kolab_sync_message::recode_message($source);
+
+        $this->assertEquals($result, $message);
+    }
 }
diff --git a/tests/src/mail.recode2.out b/tests/src/mail.recode2.out
index ff4c323..be03aae 100644
--- a/tests/src/mail.recode2.out
+++ b/tests/src/mail.recode2.out
@@ -9,7 +9,6 @@ Content-Type: multipart/mixed;
 
 This is a multi-part message in MIME format.
 --------------000801030509090203070207
-
 Content-Type: multipart/alternative;
  boundary="------------060305070900000101080707"
 
@@ -31,7 +30,6 @@ ZSBBZHZlbnRzZ3L832U8YnI+DQogIDwvYm9keT4NCjwvaHRtbD4=
 --------------060305070900000101080707--
 
 --------------000801030509090203070207
-
 Content-Type: application/pdf;
  name="Weihnachtsbrief13.pdf"
 Content-Transfer-Encoding: base64
diff --git a/tests/src/mail.recode4 b/tests/src/mail.recode4
new file mode 100644
index 0000000..624766e
--- /dev/null
+++ b/tests/src/mail.recode4
@@ -0,0 +1,47 @@
+MIME-Version: 1.0
+Content-Type: multipart/alternative;
+ boundary="=_421c567043d5df058671910ddb659fc5"
+Date: Thu, 06 Feb 2014 13:59:33 +0000
+From: alec <test at test.cc>
+To: <test2 at test.cc>
+Subject: test html + image
+Message-ID: <6c821c802bc5293e179f9bcb5d4d8279 at klab.cc>
+User-Agent: Roundcube Webmail/1.0-git
+
+--=_421c567043d5df058671910ddb659fc5
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+ 
+
+test message with inline image żąść 
+
+ 
+--=_421c567043d5df058671910ddb659fc5
+Content-Type: multipart/related;
+ boundary="=_61b68141aaee8dc5b321e6059b43bb78"
+
+--=_61b68141aaee8dc5b321e6059b43bb78
+Content-Transfer-Encoding: quoted-printable
+Content-Type: text/html; charset=UTF-8
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
+<html><body style=3D'font-size: 10pt; font-family: Verdana,Geneva,sans-seri=
+f'>
+<p>test message with inline image =C5=BC=C4=85=C5=9B=C4=87</p>
+<p><img src=3D"cid:139169517352f395455c016176663627 at test.cc" alt=3D"logo.gif" /></p>
+</body></html>
+
+--=_61b68141aaee8dc5b321e6059b43bb78
+Content-Transfer-Encoding: base64
+Content-ID: <139169517352f395455c016176663627 at test.cc>
+Content-Type: image/jpeg;
+ name=logo.gif
+Content-Disposition: inline;
+ filename=logo.gif;
+ size=25745
+
+/9j/4AAQSkZJRgABAgEASABIAAD/4QqARXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
+--=_61b68141aaee8dc5b321e6059b43bb78--
+
+--=_421c567043d5df058671910ddb659fc5--
diff --git a/tests/src/mail.recode4.out b/tests/src/mail.recode4.out
new file mode 100644
index 0000000..e86db3f
--- /dev/null
+++ b/tests/src/mail.recode4.out
@@ -0,0 +1,43 @@
+MIME-Version: 1.0
+Content-Type: multipart/alternative;
+ boundary="=_421c567043d5df058671910ddb659fc5"
+Date: Thu, 06 Feb 2014 13:59:33 +0000
+From: alec <test at test.cc>
+To: <test2 at test.cc>
+Subject: test html + image
+Message-ID: <6c821c802bc5293e179f9bcb5d4d8279 at klab.cc>
+User-Agent: Roundcube Webmail/1.0-git
+
+--=_421c567043d5df058671910ddb659fc5
+Content-Transfer-Encoding: base64
+Content-Type: text/plain; charset=UTF-8
+
+IA0KDQp0ZXN0IG1lc3NhZ2Ugd2l0aCBpbmxpbmUgaW1hZ2UgxbzEhcWbxIc=
+--=_421c567043d5df058671910ddb659fc5
+Content-Type: multipart/related;
+ boundary="=_61b68141aaee8dc5b321e6059b43bb78"
+
+--=_61b68141aaee8dc5b321e6059b43bb78
+Content-Transfer-Encoding: quoted-printable
+Content-Type: text/html; charset=UTF-8
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
+<html><body style=3D'font-size: 10pt; font-family: Verdana,Geneva,sans-seri=
+f'>
+<p>test message with inline image =C5=BC=C4=85=C5=9B=C4=87</p>
+<p><img src=3D"cid:139169517352f395455c016176663627 at test.cc" alt=3D"logo.gif" /></p>
+</body></html>
+
+--=_61b68141aaee8dc5b321e6059b43bb78
+Content-Transfer-Encoding: base64
+Content-ID: <139169517352f395455c016176663627 at test.cc>
+Content-Type: image/jpeg;
+ name=logo.gif
+Content-Disposition: inline;
+ filename=logo.gif;
+ size=25745
+
+/9j/4AAQSkZJRgABAgEASABIAAD/4QqARXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
+--=_61b68141aaee8dc5b321e6059b43bb78--
+
+--=_421c567043d5df058671910ddb659fc5--




More information about the commits mailing list