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