tools.win_pg_dump_controller
2:7c93b0305522
Go to Latest
tools.win_pg_dump_controller/win_pg_dump_controller/smtp_connector.py
+ Возможность отправлять оповещения по почте
3 from .config import Config
5 from email.message import EmailMessage
6 from smtplib import SMTP, SMTPException
7 from typing import List, Optional
8 from socket import gethostname
9 from datetime import datetime
10 from os.path import basename, exists
13 class MailError(Exception):
17 class MailSender(object):
19 server: Optional[str], port: Optional[int],
20 mail_from: Optional[str], mail_to: Optional[str]):
22 self.mail_from = mail_from
23 self.mail_to = mail_to if mail_to is not None else 'root'
24 self.port = port if port is not None else 25
26 def sendmail(self, content: str, logs: List[str]) -> None:
29 msg['To'] = self.mail_to
31 msg['From'] = self.mail_from
33 msg['Subject'] = f'{gethostname()}: Posgres backup - {datetime.now()}'
34 msg.set_content(content)
39 msg.add_attachment(open(f).read(), filename=basename(f))
42 raise MailError(f'Error on open logfile "{f}": {e}')
45 s = SMTP(host=self.server, port=self.port)
48 from_addr=(self.mail_from if self.mail_from is not None else ''),
49 to_addrs=self.mail_to,
53 except SMTPException as e:
54 raise MailError(f'Error on sending Email: {e}')
57 def from_config(cls, config: Config):
59 server=config.smtp_server,
60 mail_from=config.mail_from,
61 mail_to=config.mail_to,