Subversion Repositories SmartDukaan

Rev

Rev 5197 | Rev 5828 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5197 Rev 5299
Line 1... Line 1...
1
from email.mime.text import MIMEText
1
from email.mime.text import MIMEText
2
from shop2020.clients.HelperClient import HelperClient
2
from shop2020.clients.HelperClient import HelperClient
3
from shop2020.thriftpy.utils.ttypes import Mail
3
from shop2020.thriftpy.utils.ttypes import Mail
4
from shop2020.utils.daemon import Daemon
4
from shop2020.utils.daemon import Daemon
5
 
5
import optparse
6
import sched
6
import sched
7
import time
-
 
8
import smtplib
7
import smtplib
9
import sys
8
import sys
10
import optparse
9
import time
-
 
10
 
11
 
11
 
12
 
12
 
13
class EmailSender(Daemon):
13
class EmailSender(Daemon):
14
    def __init__(self, logfile='/var/log/utils/emailsender/emailsender.log', pidfile='/var/run/email-sender.pid'):
14
    def __init__(self, logfile='/var/log/utils/emailsender/emailsender.log', pidfile='/var/run/email-sender.pid'):
15
        Daemon.__init__(self, pidfile, stdout=logfile, stderr=logfile)
15
        Daemon.__init__(self, pidfile, stdout=logfile, stderr=logfile)
Line 18... Line 18...
18
        self.time_to_sleep = 2
18
        self.time_to_sleep = 2
19
        self.authenticate()
19
        self.authenticate()
20
 
20
 
21
    def authenticate(self):
21
    def authenticate(self):
22
        try:
22
        try:
23
            print "Attempting authentication at", time.time()
23
            print "Attempting authentication at ", time.time()
24
            self.mailServer = smtplib.SMTP("smtp.sendgrid.net", 587)
24
            self.sendGridMailServer = smtplib.SMTP("smtp.sendgrid.net", 587)
-
 
25
            self.sendGridSender = "shop2020mail"
-
 
26
            self.sendGridPassword = "shop2020"
-
 
27
            self.sendGridMailServer.ehlo()
-
 
28
            self.sendGridMailServer.starttls()
25
            
29
            self.sendGridMailServer.ehlo()
-
 
30
            self.sendGridMailServer.login(self.sendGridSender, self.sendGridPassword)
-
 
31
 
-
 
32
            self.gmailServer = smtplib.SMTP("smtp.gmail.com", 587)
26
            self.sender = "shop2020mail"
33
            self.gmailSender = "help@shop2020.in"
27
            self.password = "shop2020"
34
            self.gmailPassword = "5h0p2o2o"
28
            self.mailServer.ehlo()
35
            self.gmailServer.ehlo()
29
            self.mailServer.starttls()
36
            self.gmailServer.starttls()
30
            self.mailServer.ehlo()
37
            self.gmailServer.ehlo()
31
            self.mailServer.login(self.sender, self.password)
38
            self.gmailServer.login(self.gmailSender, self.gmailPassword)            
32
            print "Authentication successful", time.time()
39
            print "Authentication successful", time.time()
33
            
40
            
34
        except smtplib.SMTPConnectError as e:
41
        except smtplib.SMTPConnectError as e:
35
            print 'Specified host did not respond correctly', e        
42
            print 'Specified host did not respond correctly', e        
36
        except smtplib.SMTPHeloError as e:
43
        except smtplib.SMTPHeloError as e:
Line 56... Line 63...
56
        else:
63
        else:
57
            msg['From'] = "help@saholic.com"
64
            msg['From'] = "help@saholic.com"
58
        msg['Subject'] = mail.subject
65
        msg['Subject'] = mail.subject
59
        
66
        
60
        try:
67
        try:
-
 
68
            self.setMailServerAndPassword(mail)
61
            rs = self.mailServer.sendmail(self.password, mail.to, msg.as_string())
69
            rs = self.mailServer.sendmail(self.password, mail.to, msg.as_string())
62
            
-
 
63
        except smtplib.SMTPServerDisconnected as e:
70
        except smtplib.SMTPServerDisconnected as e:
64
            print 'Server Disconnected at', time.time()
71
            print 'Server Disconnected at', time.time()
65
            self.authenticate()
72
            self.authenticate()
66
            rs = self.mailServer.sendmail(self.password, mail.to, msg.as_string())
73
            rs = self.mailServer.sendmail(self.password, mail.to, msg.as_string())
67
        
74
        
68
        print msg['To']
75
        print msg['To']
69
        # Should be mailServer.quit(), but that crashes...
76
        # Should be mailServer.quit(), but that crashes...
70
        return rs
77
        return rs
71
 
78
 
-
 
79
    def setMailServerAndPassword(self, mail):
-
 
80
        self.mailServer = self.gmailServer
-
 
81
        self.password = self.gmailPassword
-
 
82
 
-
 
83
        for receiver in mail.to:
-
 
84
            if not receiver.endswith('@saholic.com') and not receiver.endswith('@shop2020.in'):
-
 
85
                self.mailServer = self.sendGridMailServer
-
 
86
                self.password = self.sendGridPassword
-
 
87
                break
-
 
88
 
72
    def send(self):
89
    def send(self):
73
        print "Despatch stared at ", time.time()
90
        print "Despatch stared at ", time.time()
74
        helper_client = HelperClient().get_client()
91
        helper_client = HelperClient().get_client()
75
        
92
        
76
        emails_to_be_dispatched = helper_client.getEmailsToBeSent()
93
        emails_to_be_dispatched = helper_client.getEmailsToBeSent()