Subversion Repositories SmartDukaan

Rev

Rev 1425 | Rev 1566 | 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
        msg['To'] = ', '.join( mail.to )
19
 
20
        if mail.sender:
21
            msg['From'] = mail.sender
22
        else:
23
            msg['From'] = "help@saholic.com"
24
        msg['Subject'] = mail.subject
25
 
26
        mail.sender = "help@shop2020.in"
27
        mail.password = "5h0p2o2o"
28
        mailServer = smtplib.SMTP("smtp.gmail.com", 587)
29
        mailServer.ehlo()
30
        mailServer.starttls()
31
        mailServer.ehlo()
32
        mailServer.login(mail.sender, mail.password)
33
        rs = mailServer.sendmail(mail.password, mail.to, msg.as_string())
34
        # Should be mailServer.quit(), but that crashes...
35
        mailServer.close()
36
        return rs
37
 
38
    def send(self):
39
        print "Despatch stared at ", time.time()
40
        helper_client = HelperClient().get_client()
41
 
42
        emails_to_be_dispatched = helper_client.getEmailsToBeSent("TransactionInfo")
43
        print len(emails_to_be_dispatched)
44
 
45
        for email in emails_to_be_dispatched:
46
            mail = Mail(email.emailTo, email.subject, email.body, None, None, None)
47
            send_result = self.sendMail(mail)
48
 
49
            if len(send_result) == 0:
50
                print "Sent at", time.time()
51
                helper_client.markEmailAsSent(email.id)
52
            else:
53
                print "Failed sending email. Id:", " Time:", time.time()
54
 
55
        self.email_schedular.enter(self.time_to_sleep, 1, self.send, ())
56
 
57
    def start(self):
58
        self.email_schedular.enter(self.time_to_sleep, 1, self.send, ())
59
        self.email_schedular.run()
60
 
61
EmailSender().start()