|
|
|
@ -182,15 +182,21 @@ class Letter:
|
|
|
|
|
|
|
|
|
|
def _getTextPlain(self):
|
|
|
|
|
"""Get content from body message"""
|
|
|
|
|
letter_text = self.mail.get_payload(decode=True)
|
|
|
|
|
charset = self.mail.get_charsets()
|
|
|
|
|
# if charset specified and it is not utf-8
|
|
|
|
|
try:
|
|
|
|
|
if charset and charset[0] and not charset[0].lower() in ['utf-8', 'utf8']:
|
|
|
|
|
letter_text = letter_text.decode(charset[0]).encode('utf-8')
|
|
|
|
|
except Exception as e:
|
|
|
|
|
Logger().printDEBUG("wrong decode from %s: %s" % (charset[0], e))
|
|
|
|
|
# letter_text = self.mail.get_payload(decode=True)
|
|
|
|
|
# charset = self.mail.get_charsets()
|
|
|
|
|
# # if charset specified and it is not utf-8
|
|
|
|
|
# try:
|
|
|
|
|
# if charset and charset[0] and not charset[0].lower() in ['utf-8', 'utf8']:
|
|
|
|
|
# letter_text = letter_text.decode(charset[0])
|
|
|
|
|
# except Exception as e:
|
|
|
|
|
# Logger().printDEBUG("wrong decode from %s: %s" % (charset[0], e))
|
|
|
|
|
|
|
|
|
|
letter_text = self.mail.get_payload()
|
|
|
|
|
if isinstance(letter_text, str):
|
|
|
|
|
return letter_text
|
|
|
|
|
else:
|
|
|
|
|
Logger().printDEBUG("wrong content type (expected plain text)")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getSenderEmails(self):
|
|
|
|
|
"""Cache function for _getSenderEmails"""
|
|
|
|
@ -253,13 +259,11 @@ class Letter:
|
|
|
|
|
self.defaults['Subject']))
|
|
|
|
|
# join to string
|
|
|
|
|
return "".join(
|
|
|
|
|
[
|
|
|
|
|
# decode first element by second element
|
|
|
|
|
i[0].decode(i[1] or "utf-8").encode('utf-8')
|
|
|
|
|
# decoded header
|
|
|
|
|
i[0].decode(i[1] or "utf-8") if i[1] else i[0]
|
|
|
|
|
for i in decodedSubject
|
|
|
|
|
])
|
|
|
|
|
except:
|
|
|
|
|
)
|
|
|
|
|
except Exception as e:
|
|
|
|
|
Logger().printDEBUG("Wrong subject:%s" % self.mail.get("Subject"))
|
|
|
|
|
return self.defaults['Subject']
|
|
|
|
|
|
|
|
|
@ -277,7 +281,7 @@ class Letter:
|
|
|
|
|
filename = ("%s_%s%s" % \
|
|
|
|
|
(time.strftime("%Y-%m-%d_%H:%M", time.localtime(self.getDate())),
|
|
|
|
|
suffix, self.getSubject())).replace('/', '')
|
|
|
|
|
return filename.decode('utf-8')[:maxfilename].encode('utf-8')
|
|
|
|
|
return filename[:maxfilename]
|
|
|
|
|
|
|
|
|
|
def copyTo(self, destination, suffix="", filename=None):
|
|
|
|
|
destination = pathjoin(destination, filename or self._genfilename(suffix))
|
|
|
|
@ -649,7 +653,10 @@ def main(argv):
|
|
|
|
|
# process all letter specified by letter-file option
|
|
|
|
|
for lettername in parser.values.letter_file:
|
|
|
|
|
if pathexists(lettername):
|
|
|
|
|
mail_keeper.addLetter( Letter(file=lettername) )
|
|
|
|
|
ll = Letter(file=lettername)
|
|
|
|
|
mail_keeper.addLetter(ll)
|
|
|
|
|
#DEBUG
|
|
|
|
|
print(ll.mail.get_content_type())
|
|
|
|
|
else:
|
|
|
|
|
Logger().printERROR("file not found:%s" % lettername)
|
|
|
|
|
|
|
|
|
|