diff --git a/UI/MailPartViewers/UIxMailPartHTMLViewer.m b/UI/MailPartViewers/UIxMailPartHTMLViewer.m index ca41c7f62..f1ead5ffd 100644 --- a/UI/MailPartViewers/UIxMailPartHTMLViewer.m +++ b/UI/MailPartViewers/UIxMailPartHTMLViewer.m @@ -872,6 +872,19 @@ static NSData* _sanitizeContent(NSData *theData) usingEncodingNamed: [[bodyInfo objectForKey:@"parameterList"] objectForKey: @"charset"]]; + // In some rare cases (like #3276), we can get utterly broken email messages where + // HTML parts are wrongly encoded. We try to fall back to UTF-8 if that happens and + // if it still happens, we fall back to ISO-Latin-1. + if (!s) + { + s = [[NSString alloc] initWithData: preparsedContent encoding: NSUTF8StringEncoding]; + + if (!s) + s = [[NSString alloc] initWithData: preparsedContent encoding: NSISOLatin1StringEncoding]; + + AUTORELEASE(s); + } + #if BYTE_ORDER == BIG_ENDIAN preparsedContent = [s dataUsingEncoding: NSUTF16BigEndianStringEncoding]; enc = XML_CHAR_ENCODING_UTF16BE;