Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
port = config.getint(section, 'smtp-port')
_LOG.debug('sending message to {} via {}'.format(recipient, server))
ssl = config.getboolean(section, 'smtp-ssl')
smtp_auth = config.getboolean(section, 'smtp-auth')
try:
if ssl or smtp_auth:
context = _ssl.create_default_context()
if ssl:
smtp = _smtplib.SMTP_SSL(host=server, port=port, context=context)
else:
smtp = _smtplib.SMTP(host=server, port=port)
except KeyboardInterrupt:
raise
except Exception as e:
raise _error.SMTPConnectionError(server=server) from e
if smtp_auth:
username = config.get(section, 'smtp-username')
password = config.get(section, 'smtp-password')
try:
if not ssl:
smtp.starttls(context=context)
smtp.login(username, password)
except KeyboardInterrupt:
raise
except Exception as e:
raise _error.SMTPAuthenticationError(
server=server, username=username)
smtp.send_message(message, sender, recipient.split(','))
smtp.quit()
'US-ASCII'
>>> guess_encoding('α', encodings=('US-ASCII', 'UTF-8'))
'UTF-8'
>>> guess_encoding('α', encodings=('US-ASCII', 'ISO-8859-1'))
Traceback (most recent call last):
...
rss2email.error.NoValidEncodingError: no valid encoding for α in ('US-ASCII', 'ISO-8859-1')
"""
for encoding in encodings:
try:
string.encode(encoding)
except (UnicodeError, LookupError):
pass
else:
return encoding
raise _error.NoValidEncodingError(string=string, encodings=encodings)
if ssl:
imap = _imaplib.IMAP4_SSL(server, port)
else:
imap = _imaplib.IMAP4(server, port)
try:
if config.getboolean(section, 'imap-auth'):
username = config.get(section, 'imap-username')
password = config.get(section, 'imap-password')
try:
if not ssl:
imap.starttls()
imap.login(username, password)
except KeyboardInterrupt:
raise
except Exception as e:
raise _error.IMAPAuthenticationError(
server=server, port=port, username=username)
mailbox = config.get(section, 'imap-mailbox')
date = _imaplib.Time2Internaldate(_time.localtime())
message_bytes = _flatten(message)
imap.append(mailbox, None, date, message_bytes)
finally:
imap.logout()
def new(feeds, args):
"Create a new feed database."
if args.email:
_LOG.info('set the default target email to {}'.format(args.email))
feeds.config['DEFAULT']['to'] = args.email
if _os.path.exists(feeds.configfiles[-1]):
raise _error.ConfigAlreadyExistsError(feeds=feeds)
feeds.save()
def index(self, index):
if isinstance(index, int):
try:
return self[index]
except IndexError as e:
raise _error.FeedIndexError(index=index, feeds=self) from e
elif isinstance(index, str):
try:
index = int(index)
except ValueError:
pass
else:
return self.index(index)
for feed in self:
if feed.name == index:
return feed
try:
super(Feeds, self).index(index)
except (IndexError, ValueError) as e:
raise _error.FeedIndexError(index=index, feeds=self) from e
def _load_feeds(self, lock, require):
_LOG.debug('load feed data from {}'.format(self.datafile))
if not _os.path.exists(self.datafile):
if require:
raise _error.NoDataFile(feeds=self)
_LOG.info('feed data file not found at {}'.format(self.datafile))
_LOG.debug('creating an empty data file')
dirname = _os.path.dirname(self.datafile)
if dirname and not _os.path.isdir(dirname):
_os.makedirs(dirname, mode=0o700, exist_ok=True)
with _codecs.open(self.datafile, 'w', self.datafile_encoding) as f:
self._save_feed_states(feeds=[], stream=f)
try:
self._datafile_lock = _codecs.open(
self.datafile, 'r', self.datafile_encoding)
except IOError as e:
raise _error.DataFileError(feeds=self) from e
locktype = 0
if lock and UNIX:
locktype = _fcntl.LOCK_SH
def __call__(self, *args, **kwargs):
self._args = args
self._kwargs = kwargs
self.start()
self.join(self.timeout)
if self.error:
raise _error.TimeoutError(
time_limited_function=self) from self.error[1]
elif self.is_alive():
raise _error.TimeoutError(time_limited_function=self)
return self.result