class Schedueler(object): def __init__(self, queue=None): self._mailer = Mailer() self._queue = queue or [] self.schedueled_entries_that_were_sent = [] @property def queue(self): return self._queue def run(self, now=datetime.datetime.now()): for schedueled_mail in self.mails_to_be_sent_now(now=now): index = self._queue.index(schedueled_mail) schedueled_entry = self._queue.pop(index) self.send(schedueled_entry) def mails_to_be_sent_now(self, now=datetime.datetime.now()): return filter( lambda schedueled_entry: schedueled_entry.when < now and schedueled_entry.sent == False, self._queue) def mark_as_sent(self, schedueled_entry): schedueled_entry.sent = True self.schedueled_entries_that_were_sent.append(schedueled_entry) def connect(self): self._mailer.connect() self._mailer.authenticate() def disconnect(self): self._mailer.disconnect() def send(self, schedueled_entry): try: self._mailer.send(schedueled_entry.mail) self.mark_as_sent(schedueled_entry) except smtplib.SMTPException: self._queue.append(schedueled_entry)
class Schedueler(object): def __init__(self, queue = None): self._mailer = Mailer() self._queue = queue or [] self.schedueled_entries_that_were_sent = [] @property def queue(self): return self._queue def run(self, now = datetime.datetime.now()): for schedueled_mail in self.mails_to_be_sent_now(now = now): index = self._queue.index(schedueled_mail) schedueled_entry = self._queue.pop(index) self.send(schedueled_entry); def mails_to_be_sent_now(self, now = datetime.datetime.now()): return filter(lambda schedueled_entry: schedueled_entry.when < now and schedueled_entry.sent == False, self._queue) def mark_as_sent(self, schedueled_entry): schedueled_entry.sent = True self.schedueled_entries_that_were_sent.append(schedueled_entry) def connect(self): self._mailer.connect() self._mailer.authenticate() def disconnect(self): self._mailer.disconnect() def send(self, schedueled_entry): try: self._mailer.send(schedueled_entry.mail) self.mark_as_sent(schedueled_entry) except smtplib.SMTPException: self._queue.append(schedueled_entry)
from mailer import Mailer mailer = Mailer('smtp.gmail.com', 465) mailer.authenticate('*****@*****.**', '<PASSWORD_HERE>') mailer.send_mail( subject='Test Email', sender={ 'name': 'Shrinivas Shukla', 'email': '*****@*****.**' }, recipients={ 'To': ['*****@*****.**'], 'Cc': ['*****@*****.**'], 'Bcc': ['*****@*****.**'] }, body= 'Dear <b>X</b>,<br/>This mail is sent from python code.<br/><br/><i>HTML</i><span style="background: red; color: green; font-weight: bold;font-size: 24px; font-family: Calibri;">works like magic</span><br/><br/>Also, check out the attachment.<br/><figure> <img src="cid:shivaji_img" alt="Shivaji" style="width:100%"> <figcaption>Jai Bhawani.... Jai Shivaji...</figcaption></figure>', attachments=[{ 'name': 'attachment.txt', 'path': 'attachment.txt' }], inline_images=[{ 'name': 'shivaji.jpg', 'path': 'shivaji.jpg', 'cid': 'shivaji_img' }])