mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #7029 (Error while sending book to e-mail)
This commit is contained in:
parent
20dedaac5c
commit
3e6cc2042b
@ -455,6 +455,24 @@ def prepare_string_for_xml(raw, attribute=False):
|
|||||||
def isbytestring(obj):
|
def isbytestring(obj):
|
||||||
return isinstance(obj, (str, bytes))
|
return isinstance(obj, (str, bytes))
|
||||||
|
|
||||||
|
def force_unicode(obj, enc=preferred_encoding):
|
||||||
|
if isbytestring(obj):
|
||||||
|
try:
|
||||||
|
obj = obj.decode(enc)
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
obj = obj.decode(filesystem_encoding if enc ==
|
||||||
|
preferred_encoding else preferred_encoding)
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
obj = obj.decode('utf-8')
|
||||||
|
except:
|
||||||
|
obj = repr(obj)
|
||||||
|
if isbytestring(obj):
|
||||||
|
obj = obj.decode('utf-8')
|
||||||
|
return obj
|
||||||
|
|
||||||
|
|
||||||
def human_readable(size):
|
def human_readable(size):
|
||||||
""" Convert a size in bytes into a human readable form """
|
""" Convert a size in bytes into a human readable form """
|
||||||
divisor, suffix = 1, "B"
|
divisor, suffix = 1, "B"
|
||||||
|
@ -23,7 +23,7 @@ from calibre.gui2 import config, error_dialog, Dispatcher, dynamic, \
|
|||||||
warning_dialog, \
|
warning_dialog, \
|
||||||
question_dialog, info_dialog, choose_dir
|
question_dialog, info_dialog, choose_dir
|
||||||
from calibre.ebooks.metadata import authors_to_string
|
from calibre.ebooks.metadata import authors_to_string
|
||||||
from calibre import preferred_encoding, prints
|
from calibre import preferred_encoding, prints, force_unicode
|
||||||
from calibre.utils.filenames import ascii_filename
|
from calibre.utils.filenames import ascii_filename
|
||||||
from calibre.devices.errors import FreeSpaceError
|
from calibre.devices.errors import FreeSpaceError
|
||||||
from calibre.utils.smtp import compose_mail, sendmail, extract_email_address, \
|
from calibre.utils.smtp import compose_mail, sendmail, extract_email_address, \
|
||||||
@ -964,12 +964,12 @@ class DeviceMixin(object): # {{{
|
|||||||
for jobname, exception, tb in results:
|
for jobname, exception, tb in results:
|
||||||
title = jobname.partition(':')[-1]
|
title = jobname.partition(':')[-1]
|
||||||
if exception is not None:
|
if exception is not None:
|
||||||
errors.append([title, exception, tb])
|
errors.append(list(map(force_unicode, [title, exception, tb])))
|
||||||
else:
|
else:
|
||||||
good.append(title)
|
good.append(title)
|
||||||
if errors:
|
if errors:
|
||||||
errors = '\n'.join([
|
errors = u'\n'.join([
|
||||||
'%s\n\n%s\n%s\n' %
|
u'%s\n\n%s\n%s\n' %
|
||||||
(title, e, tb) for \
|
(title, e, tb) for \
|
||||||
title, e, tb in errors
|
title, e, tb in errors
|
||||||
])
|
])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user