| 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()
|