diff --git a/botMail.py b/botMail.py index b9be45a..7aca8bc 100644 --- a/botMail.py +++ b/botMail.py @@ -10,6 +10,8 @@ import email import email.encoders import re +import datetime +import locale class Config(BaseProxyConfig): def do_update(self, helper: ConfigUpdateHelper) -> None: @@ -26,7 +28,7 @@ class MailBot(Plugin): @command.new(name="mail") @command.argument("pattern", pass_raw=True, required=True) - async def command(self, evt: MessageEvent, pattern: str) -> None: + async def sendMail(self, evt: MessageEvent, pattern: str) -> None: await evt.mark_read() try: fullMail = pattern.split("\n", 1) @@ -66,6 +68,54 @@ class MailBot(Plugin): await evt.respond("
!mail Object
Corps du message
", allow_html=True) + + def next_weekday(self, d, weekday): + days_ahead = weekday - d.weekday() + if days_ahead < 0: + days_ahead += 7 + return d + datetime.timedelta(days_ahead) + @command.new(name="repet") + @command.argument("pattern", pass_raw=True, required=True) + async def repet(self, evt: MessageEvent, pattern: str) -> None: + await evt.mark_read() + try: + locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8') + #Mercredi jour = 2 + nWed = self.next_weekday(datetime.date.today(), 2) + subject = "Programme répet du " + nWed.strftime('%d %B') + body = pattern + + if len(body) == 0: + self.log.error("Il manque le corps du mail") + await evt.respond('Il manque le corps du mail') + await evt.respond("
!repet Corps du message
", allow_html=True) + return + + self.log.info("Connecting to " + self.config["smtp_server"]+", port : "+ str(self.config["smtp_port"])) + smtp_server=smtplib.SMTP(self.config["smtp_server"],self.config["smtp_port"],None,20, None) + smtp_server.ehlo() + smtp_server.starttls() + smtp_server.ehlo() + self.log.info("With user : " + self.config["sender_addr"]) + smtp_server.login(self.config["sender_addr"], self.config["sender_passwd"]) + + msg = MIMEMultipart() + user = re.search('@(.*):', evt.sender) + msg['From'] = user.group(1) + " via ConDeBot<" + self.config["sender_addr"] + '>' + self.log.info(msg['From']) + msg['To'] = self.config["send_to"] + msg['Subject'] = subject + msg['Date'] = email.utils.formatdate(localtime=True) + + msg.attach(MIMEText(body)) + self.log.info(msg.as_string()) + smtp_server.sendmail(msg['From'],msg['To'],msg.as_string()) + await evt.respond('Mail envoyé') + except Exception as e: + self.log.error(str(e)) + await evt.respond('Erreur envoi mail') + await evt.respond("
!mail Object
Corps du message
", allow_html=True) + @classmethod def get_config_class(cls) -> Type[BaseProxyConfig]: return Config