| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- '''
- usage:
- m = Mail("mail-auto@bas-rhin.fr", ["destinataire@bas-rhin.fr"], "mon mail", "mon message")
- m.send()
- '''
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- import logging.handlers
- import smtplib
- class Mail():
- HOST = ""
- def __init__(self, fromaddr, toaddrs, subject, msg):
- self.mailport = None
- self.fromaddr = fromaddr
- self.toaddrs = toaddrs
- self.subject = subject
- self.msg = msg
- self.mail = MIMEMultipart('alternative')
- self.mail['Subject'] = self.subject
- self.mail['From'] = self.fromaddr
- self.mail['To'] = ",".join(self.toaddrs)
- self.mail.attach(MIMEText(self.msg, 'html', _charset='utf-8'))
- def send(self):
- if not self.HOST:
- raise ValueError("Mail.HOST has to be defined before sending any mail")
-
- port = self.mailport if self.mailport else smtplib.SMTP_PORT
- with smtplib.SMTP(self.HOST, port) as smtp:
- smtp.sendmail(self.fromaddr, self.toaddrs, self.mail.as_string())
- class BufferingSMTPHandler(logging.handlers.BufferingHandler):
- """ buffering email for logging """
- def __init__(self, mailhost, fromaddr, toaddrs, subject, capacity):
- logging.handlers.BufferingHandler.__init__(self, capacity)
- self.mailhost = mailhost
- self.mailport = None
- self.fromaddr = fromaddr
- self.toaddrs = toaddrs
- self.subject = subject
- def flush(self):
- try:
- if len(self.buffer) > 0:
- port = self.mailport if self.mailport else smtplib.SMTP_PORT
- msg = "\n".join([self.format(record) for record in self.buffer])
- msg = MIMEText(msg.encode('utf-8'), _charset='utf-8')
- msg['Subject'] = self.subject
- msg['From'] = self.fromaddr
- msg['To'] = ",".join(self.toaddrs)
- smtp = smtplib.SMTP(self.mailhost, port)
- smtp.sendmail(self.fromaddr, self.toaddrs, msg.as_string())
- smtp.quit()
- self.buffer = []
- except Exception as e:
- print(e)
- raise
- if __name__ == "__main__":
- mail = Mail("",
- ["olinox14@yahoo.fr"],
- "test",
- "test")
- mail.send()
|