diff --git a/UI/MailPartViewers/UIxMailPartHTMLViewer.m b/UI/MailPartViewers/UIxMailPartHTMLViewer.m
index c173ca9ef..1601894a7 100644
--- a/UI/MailPartViewers/UIxMailPartHTMLViewer.m
+++ b/UI/MailPartViewers/UIxMailPartHTMLViewer.m
@@ -1,6 +1,6 @@
/* UIxMailPartHTMLViewer.m - this file is part of SOGo
*
- * Copyright (C) 2007-2013 Inverse inc.
+ * Copyright (C) 2007-2017 Inverse inc.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,10 +25,14 @@
#import
#import
#import
+#import
+#import
#include
#import
+#import
+#import
#import
#import
@@ -718,14 +722,15 @@ _xmlCharsetForCharset (NSString *charset)
{
NSObject *parser;
NSData *preparsedContent;
- SOGoMailObject *mail;
NSString *s;
xmlCharEncoding enc;
- mail = [self clientObject];
+ if ([[self decodedFlatContent] isKindOfClass: [NGMimeBodyPart class]])
+ preparsedContent = [[[self decodedFlatContent] body] sanitizedContentUsingVoidTags: VoidTags];
+ else
+ preparsedContent = [[self decodedFlatContent] sanitizedContentUsingVoidTags: VoidTags];
- preparsedContent = [[super decodedFlatContent] sanitizedContentUsingVoidTags: VoidTags];
parser = [[SaxXMLReaderFactory standardXMLReaderFactory]
createXMLReaderForMimeType: @"text/html"];
@@ -841,18 +846,25 @@ _xmlCharsetForCharset (NSString *charset)
{
NSObject *parser;
NSData *preparsedContent;
- SOGoMailObject *mail;
SOGoMailBodyPart *part;
NSString *encoding;
xmlCharEncoding enc;
- part = [self clientObject];
- mail = [part mailObject];
-
- preparsedContent = [[part fetchBLOB] sanitizedContentUsingVoidTags: VoidTags];
parser = [[SaxXMLReaderFactory standardXMLReaderFactory]
createXMLReaderForMimeType: @"text/html"];
- encoding = [[part partInfo] valueForKey: @"encoding"];
+
+ if ([[self decodedFlatContent] isKindOfClass: [NGMimeBodyPart class]])
+ {
+ preparsedContent = [[[self decodedFlatContent] body] sanitizedContentUsingVoidTags: VoidTags];
+ encoding = [[[self decodedFlatContent] contentType] valueOfParameter: @"charset"];
+ }
+ else
+ {
+ part = [self clientObject];
+ preparsedContent = [[part fetchBLOB] sanitizedContentUsingVoidTags: VoidTags];
+ encoding = [[part partInfo] valueForKey: @"encoding"];
+ }
+
if (![encoding length])
encoding = @"us-ascii";