Allow using non-ascii chars in email passwords

Fixes #1202825 [SMTP password with special characters not stored correctly](https://bugs.launchpad.net/calibre/+bug/1202825)
This commit is contained in:
Kovid Goyal 2013-07-19 09:07:04 +05:30
parent 6298b1d059
commit 54054c1c9f
2 changed files with 5 additions and 5 deletions

View File

@ -113,7 +113,7 @@ class Sendmail(object):
verbose=1, verbose=1,
relay=opts.relay_host, relay=opts.relay_host,
username=opts.relay_username, username=opts.relay_username,
password=unhexlify(opts.relay_password), port=opts.relay_port, password=unhexlify(opts.relay_password).decode('utf-8'), port=opts.relay_port,
encryption=opts.encryption, encryption=opts.encryption,
debug_output=log.debug) debug_output=log.debug)
finally: finally:

View File

@ -32,7 +32,7 @@ class TestEmail(QDialog, TE_Dialog):
self.to.setText(pa) self.to.setText(pa)
if opts.relay_host: if opts.relay_host:
self.label.setText(_('Using: %(un)s:%(pw)s@%(host)s:%(port)s and %(enc)s encryption')% self.label.setText(_('Using: %(un)s:%(pw)s@%(host)s:%(port)s and %(enc)s encryption')%
dict(un=opts.relay_username, pw=unhexlify(opts.relay_password), dict(un=opts.relay_username, pw=unhexlify(opts.relay_password).decode('utf-8'),
host=opts.relay_host, port=opts.relay_port, enc=opts.encryption)) host=opts.relay_host, port=opts.relay_port, enc=opts.encryption))
def test(self, *args): def test(self, *args):
@ -129,7 +129,7 @@ class SendEmail(QWidget, Ui_Form):
self.relay_username.setText(opts.relay_username) self.relay_username.setText(opts.relay_username)
self.relay_username.textChanged.connect(self.changed) self.relay_username.textChanged.connect(self.changed)
if opts.relay_password: if opts.relay_password:
self.relay_password.setText(unhexlify(opts.relay_password)) self.relay_password.setText(unhexlify(opts.relay_password).decode('utf-8'))
self.relay_password.textChanged.connect(self.changed) self.relay_password.textChanged.connect(self.changed)
getattr(self, 'relay_'+opts.encryption.lower()).setChecked(True) getattr(self, 'relay_'+opts.encryption.lower()).setChecked(True)
self.relay_tls.toggled.connect(self.changed) self.relay_tls.toggled.connect(self.changed)
@ -169,7 +169,7 @@ class SendEmail(QWidget, Ui_Form):
sendmail(msg, from_=opts.from_, to=[to], sendmail(msg, from_=opts.from_, to=[to],
verbose=3, timeout=30, relay=opts.relay_host, verbose=3, timeout=30, relay=opts.relay_host,
username=opts.relay_username, username=opts.relay_username,
password=unhexlify(opts.relay_password), password=unhexlify(opts.relay_password).decode('utf-8'),
encryption=opts.encryption, port=opts.relay_port) encryption=opts.encryption, port=opts.relay_port)
except: except:
import traceback import traceback
@ -248,7 +248,7 @@ class SendEmail(QWidget, Ui_Form):
conf.set('relay_host', host if host else None) conf.set('relay_host', host if host else None)
conf.set('relay_port', self.relay_port.value()) conf.set('relay_port', self.relay_port.value())
conf.set('relay_username', username if username else None) conf.set('relay_username', username if username else None)
conf.set('relay_password', hexlify(password)) conf.set('relay_password', hexlify(password.encode('utf-8')))
conf.set('encryption', enc_method) conf.set('encryption', enc_method)
return True return True