SMTL

Die Stadtmeistersteilerliste und das Anmeldeformular - SK Langen e.V.
git clone git://git.oshgnacknak.de/SMTL.git
Log | Files | Refs | README

commit 9f5faa5995b18f0103262cf6e7b04177d4d79ccb
parent f8ad9a9d8eafcc318d0cead0030b29d31d885a49
Author: Oshgnacknak <osh@oshgnacknak.de>
Date:   Sat, 24 Aug 2019 10:36:02 +0200

create a new smtp connection each time

Diffstat:
Msmtl/email.py | 32++++++++++++++------------------
1 file changed, 14 insertions(+), 18 deletions(-)

diff --git a/smtl/email.py b/smtl/email.py @@ -6,19 +6,17 @@ from smtl.logging import logger class EMail: - def __init__(self, host, port=None, addr=''): - self.server = smtplib.SMTP(host, port or 587) + def __init__(self, host, port=None, addr='', user=None, password=None): + self.host = host + self.port = port or 587 self.addr = addr + self.user = user or addr + self.password = password - def login(self, user=None, password=''): - self.server.login(user or self.addr, password) - - def is_connected(self): - try: - status = self.server.noop()[0] - except smtplib.SMTPServerDisconnected: - status = -1 - return True if status == 250 else False + def create_connection(self, ): + connection = smtplib.SMTP(self.host, self.port) + connection.login(self.user, self.password) + return connection def send(self, from_addr=None, to_addr=None, subject='', body=''): msg = MIMEMultipart() @@ -27,21 +25,19 @@ class EMail: msg['Subject'] = subject msg.attach(MIMEText(body)) - if not self.is_connected(): - self.server.connect() - self.server.sendmail(msg['From'], msg['To'], msg.as_string()) + try: + self.create_connection().sendmail(msg['From'], msg['To'], msg.as_string()) + except smtplib.SMTPException as e: + logger.error('Error sending mail: ' + str(e)) if email_config: default_mail = EMail( host=email_config['HOST'], port=email_config.get('PORT'), - addr=email_config.get('ADDR') - ) - default_mail.login( + addr=email_config.get('ADDR'), user=email_config.get('USER'), password=email_config['PASSWORD'] ) - logger.info('EMail logged in: ' + default_mail.addr) else: default_mail = None