From 47d06e46dfb5e8d616e578e5c04a263b526c7a06 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sat, 28 Aug 2010 11:02:04 -0400
Subject: [PATCH] - Display inline images with known extensions and non-image content-type (#1486934)

---
 CHANGELOG                   |    1 +
 program/steps/mail/func.inc |    8 +++++++-
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index a92b3f5..65fbd2b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -13,6 +13,7 @@
 - Fix TinyMCE uses zh_CN when zh_TW locale is set (#1486929)
 - Fix TinyMCE buttons are hidden in Opera (#1486922)
 - Fix JS error on IE when trying to send HTML message with enabled spellchecker (#1486940)
+- Display inline images with known extensions and non-image content-type (#1486934)
 
 RELEASE 0.4
 -----------
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index ee33e9c..a87b784 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -1025,7 +1025,13 @@
       && !empty($MESSAGE->attachments))
     {
     foreach ($MESSAGE->attachments as $attach_prop) {
-      if (strpos($attach_prop->mimetype, 'image/') === 0) {
+      // Content-Type: image/*...
+      if (preg_match('/^image\//i', $attach_prop->mimetype) ||
+        // ...or known file extension: many clients are using application/octet-stream
+        ($attach_prop->filename &&
+          preg_match('/^application\/octet-stream$/i', $attach_prop->mimetype) &&
+          preg_match('/\.(jpg|jpeg|png|gif|bmp)$/i', $attach_prop->filename))
+      ) {
         $out .= html::tag('hr') . html::p(array('align' => "center"),
           html::img(array(
             'src' => $MESSAGE->get_part_url($attach_prop->mime_id),

--
Gitblit v1.9.1