예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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'
    }])