[Erp5-report] r24281 - /erp5/trunk/products/ERP5/Document/EmailDocument.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Oct 22 10:53:28 CEST 2008
Author: nicolas
Date: Wed Oct 22 10:53:26 2008
New Revision: 24281
URL: http://svn.erp5.org?rev=24281&view=rev
Log:
Add naïve loop to guess which encoding is used when email indicate wrong encoding
Modified:
erp5/trunk/products/ERP5/Document/EmailDocument.py
Modified: erp5/trunk/products/ERP5/Document/EmailDocument.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/EmailDocument.py?rev=24281&r1=24280&r2=24281&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/EmailDocument.py (original)
+++ erp5/trunk/products/ERP5/Document/EmailDocument.py Wed Oct 22 10:53:26 2008
@@ -129,7 +129,11 @@
for (name, value) in self._getMessage().items():
for text, encoding in decode_header(value):
if encoding is not None:
- text = text.decode(encoding).encode('utf-8')
+ try:
+ text = text.decode(encoding).encode('utf-8')
+ except UnicodeDecodeError:
+ encoding = self._guessEncoding(text)
+ text = text.decode(encoding).encode('utf-8')
if name in result:
result[name] = '%s %s' % (result[name], text)
else:
@@ -596,6 +600,20 @@
"""
self.MailHost.send(message)
+ def _guessEncoding(self, string):
+ """
+ Some Email Clients indicate wrong encoding
+ This method try to guess which encoding is used.
+ """
+ from encodings.aliases import aliases
+ codec_list = set(aliases.values())
+ for codec in codec_list:
+ try:
+ string.decode(codec)
+ except (UnicodeDecodeError, IOError):
+ continue
+ return codec
+
## Compatibility layer
#from Products.ERP5Type import Document
#Document.MailMessage = EmailDocument
More information about the Erp5-report
mailing list