From dfc79b341c4ae80fe3bae0c52cadee7c28a108fd Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Tue, 18 Oct 2011 06:09:32 -0400
Subject: [PATCH] Find charset in HTML meta tags if not specified in content-type header (#1488125)

---
 program/include/rcube_imap.php |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 8dfffe8..c35c877 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -2396,7 +2396,11 @@
 
            if (!$skip_charset_conv) {
                 if (!$o_part->charset || strtoupper($o_part->charset) == 'US-ASCII') {
-                    $o_part->charset = $this->default_charset;
+                    // try to extract charset information from HTML meta tag (#1488125)
+                    if ($o_part->ctype_secondary == 'html' && preg_match('/<meta[^>]+charset=([a-z0-9-]+)/i', $body, $m))
+                        $o_part->charset = strtoupper($m[1]);
+                    else
+                        $o_part->charset = $this->default_charset;
                 }
                 $body = rcube_charset_convert($body, $o_part->charset);
             }

--
Gitblit v1.9.1