Subversion Repositories SmartDukaan

Rev

Rev 1560 | Rev 3086 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1425 varun.gupt 1
from shop2020.thriftpy.utils.ttypes import Mail
2
from shop2020.clients.HelperClient import HelperClient
3
 
4
from email.mime.text import MIMEText
5
import sched, time, smtplib
6
 
7
class EmailSender():
8
    def __init__(self):
9
        self.email_schedular = sched.scheduler(time.time, time.sleep)
10
        self.time_to_sleep = 20
11
        print "EmailSender initiated at ", time.time()
12
 
13
    def sendMail(self, mail):
14
        if mail.sender:
15
            mail.data = "This mail is sent by " + mail.sender + "\n" + mail.data
16
 
1560 varun.gupt 17
        msg = MIMEText(mail.data, 'html')
1425 varun.gupt 18
 
1566 varun.gupt 19
        msg['To'] = mail.to
20
        print msg['To']
21
 
1425 varun.gupt 22
        if mail.sender:
23
            msg['From'] = mail.sender
24
        else:
25
            msg['From'] = "help@saholic.com"
26
        msg['Subject'] = mail.subject
27
 
28
        mail.sender = "help@shop2020.in"
29
        mail.password = "5h0p2o2o"
30
        mailServer = smtplib.SMTP("smtp.gmail.com", 587)
31
        mailServer.ehlo()
32
        mailServer.starttls()
33
        mailServer.ehlo()
34
        mailServer.login(mail.sender, mail.password)
1566 varun.gupt 35
        rs = mailServer.sendmail(mail.password, [mail.to], msg.as_string())
1425 varun.gupt 36
        # Should be mailServer.quit(), but that crashes...
37
        mailServer.close()
38
        return rs
39
 
40
    def send(self):
41
        print "Despatch stared at ", time.time()
42
        helper_client = HelperClient().get_client()
43
 
44
        emails_to_be_dispatched = helper_client.getEmailsToBeSent("TransactionInfo")
45
        print len(emails_to_be_dispatched)
46
 
47
        for email in emails_to_be_dispatched:
48
            mail = Mail(email.emailTo, email.subject, email.body, None, None, None)
49
            send_result = self.sendMail(mail)
50
 
51
            if len(send_result) == 0:
52
                print "Sent at", time.time()
53
                helper_client.markEmailAsSent(email.id)
54
            else:
55
                print "Failed sending email. Id:", " Time:", time.time()
56
 
57
        self.email_schedular.enter(self.time_to_sleep, 1, self.send, ())
58
 
59
    def start(self):
60
        self.email_schedular.enter(self.time_to_sleep, 1, self.send, ())
61
        self.email_schedular.run()
62
 
63
EmailSender().start()