mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
E-mail sending: Allow unencrypted connections to SMTP relay
This commit is contained in:
parent
2df996d408
commit
5825d31ed8
@ -73,7 +73,7 @@ class SendEmail(QWidget, Ui_Form):
|
|||||||
if opts.relay_password:
|
if opts.relay_password:
|
||||||
self.relay_password.setText(unhexlify(opts.relay_password))
|
self.relay_password.setText(unhexlify(opts.relay_password))
|
||||||
self.relay_password.textChanged.connect(self.changed)
|
self.relay_password.textChanged.connect(self.changed)
|
||||||
(self.relay_tls if opts.encryption == 'TLS' else self.relay_ssl).setChecked(True)
|
getattr(self, 'relay_'+opts.encryption.lower()).setChecked(True)
|
||||||
self.relay_tls.toggled.connect(self.changed)
|
self.relay_tls.toggled.connect(self.changed)
|
||||||
|
|
||||||
for x in ('gmail', 'hotmail'):
|
for x in ('gmail', 'hotmail'):
|
||||||
@ -210,7 +210,8 @@ class SendEmail(QWidget, Ui_Form):
|
|||||||
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))
|
||||||
conf.set('encryption', 'TLS' if self.relay_tls.isChecked() else 'SSL')
|
conf.set('encryption', 'TLS' if self.relay_tls.isChecked() else 'SSL'
|
||||||
|
if self.relay_ssl.isChecked() else 'NONE')
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="2" colspan="2">
|
<item row="4" column="2">
|
||||||
<widget class="QRadioButton" name="relay_ssl">
|
<widget class="QRadioButton" name="relay_ssl">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Use SSL encryption when connecting to the mail server.</string>
|
<string>Use SSL encryption when connecting to the mail server.</string>
|
||||||
@ -191,6 +191,16 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="4" column="3">
|
||||||
|
<widget class="QRadioButton" name="relay_none">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>WARNING: Using no encryption is highly insecure</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>&None</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -90,7 +90,7 @@ def sendmail(msg, from_, to, localhost=None, verbose=0, timeout=None,
|
|||||||
for x in to:
|
for x in to:
|
||||||
return sendmail_direct(from_, x, msg, timeout, localhost, verbose)
|
return sendmail_direct(from_, x, msg, timeout, localhost, verbose)
|
||||||
import calibre.utils.smtplib as smtplib
|
import calibre.utils.smtplib as smtplib
|
||||||
cls = smtplib.SMTP if encryption == 'TLS' else smtplib.SMTP_SSL
|
cls = smtplib.SMTP_SSL if encryption == 'SSL' else smtplib.SMTP
|
||||||
timeout = None # Non-blocking sockets sometimes don't work
|
timeout = None # Non-blocking sockets sometimes don't work
|
||||||
port = int(port)
|
port = int(port)
|
||||||
kwargs = dict(timeout=timeout, local_hostname=localhost)
|
kwargs = dict(timeout=timeout, local_hostname=localhost)
|
||||||
@ -99,7 +99,7 @@ def sendmail(msg, from_, to, localhost=None, verbose=0, timeout=None,
|
|||||||
s = cls(**kwargs)
|
s = cls(**kwargs)
|
||||||
s.set_debuglevel(verbose)
|
s.set_debuglevel(verbose)
|
||||||
if port < 0:
|
if port < 0:
|
||||||
port = 25 if encryption == 'TLS' else 465
|
port = 25 if encryption != 'SSL' else 465
|
||||||
s.connect(relay, port)
|
s.connect(relay, port)
|
||||||
if encryption == 'TLS':
|
if encryption == 'TLS':
|
||||||
s.starttls()
|
s.starttls()
|
||||||
@ -158,9 +158,9 @@ def option_parser():
|
|||||||
r('-u', '--username', help='Username for relay')
|
r('-u', '--username', help='Username for relay')
|
||||||
r('-p', '--password', help='Password for relay')
|
r('-p', '--password', help='Password for relay')
|
||||||
r('-e', '--encryption-method', default='TLS',
|
r('-e', '--encryption-method', default='TLS',
|
||||||
choices=['TLS', 'SSL'],
|
choices=['TLS', 'SSL', 'NONE'],
|
||||||
help='Encryption method to use when connecting to relay. Choices are '
|
help='Encryption method to use when connecting to relay. Choices are '
|
||||||
'TLS and SSL. Default is TLS.')
|
'TLS, SSL and NONE. Default is TLS. WARNING: Choosing NONE is highly insecure')
|
||||||
parser.add_option('-o', '--outbox', help='Path to maildir folder to store '
|
parser.add_option('-o', '--outbox', help='Path to maildir folder to store '
|
||||||
'failed email messages in.')
|
'failed email messages in.')
|
||||||
parser.add_option('-f', '--fork', default=False, action='store_true',
|
parser.add_option('-f', '--fork', default=False, action='store_true',
|
||||||
@ -231,6 +231,7 @@ def main(args=sys.argv):
|
|||||||
if opts.fork:
|
if opts.fork:
|
||||||
if os.fork() != 0:
|
if os.fork() != 0:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sendmail(msg, efrom, eto, localhost=opts.localhost, verbose=opts.verbose,
|
sendmail(msg, efrom, eto, localhost=opts.localhost, verbose=opts.verbose,
|
||||||
timeout=opts.timeout, relay=opts.relay, username=opts.username,
|
timeout=opts.timeout, relay=opts.relay, username=opts.username,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user