s4ros icon

Makowa Przypominajka

s4ros | PRO | 11/07/16 12:32:21 PM UTC | 0 ⭐ | 554 👁️ | Never ⏰ | []
Python |

3.87 KB

|

None

|

0 👍

/

0 👎

# -*- coding: utf-8 -*-
 
import MySQLdb as mdb # pip install MySQL-python
import smtplib
import logging
from time import gmtime, strftime
 
loglevel=logging.DEBUG
# loglevel=logging.INFO
 
logging.basicConfig(format='%(asctime)s [Przypominajka-%(levelname)s] %(message)s',filename='przypomiajka.log',level=loglevel)
 
class Mys:
    """ Simple MySQL class to handle select2dict and execute queries """
    def __init__(self, db_server, db_user, db_pass, db_name):
        logging.debug("Connecting to database %s on server: %s as %s", db_name, db_server, db_user)
        self.con = mdb.connect(db_server, db_user, db_pass, db_name)
 
    def execute(self,query):
        try:
            #~ con = mdb.connect('localhost','s4ros','.ZXCasd!@#.','s4ros')
            logging.debug("Executing SQL query: '%s'",query)
            cur = self.con.cursor()
            cur.execute(query)
            return True
        except mdb.Error, e:
            print "Error %d: %s" % (e.args[0],e.args[1])
            logging.error("Can't execute SQL query!")
            return False
        self.con.close()
 
    def select2dict(self,query):
        try:
            #~ con = mdb.connect('localhost','s4ros','.ZXCasd!@#.','s4ros')
            cur = self.con.cursor(mdb.cursors.DictCursor)
            logging.debug("select2dict from SQL query: '%s'",query)
            cur.execute(query)
            rows = cur.fetchall()
            cols = cur.description
            return rows
        except mdb.Error, e:
            print "Error %d: %s" % (e.args[0],e.args[1])
            logging.error("Can't select2dict SQL query!")
            return False
        self.con.close()
 
# test
if __name__ == '__main__':
    logging.info("Started new session of makova-reminder-cron job!")
 
    db_server = 'sql.second.vdl.pl'
    db_user = 'kwg13_makova'
    db_pass = '11roT2yUBV2wTByF4LSX'
    db_name = db_user
 
    smtp_server = "makovapanienka.pl"
    smtp_port = 587
    smtp_user = "[email protected]"
    smtp_passwd = "RGDjOJkt"
 
    logging.info("Creating connection to Database")
    m = Mys(db_server, db_user, db_pass, db_name)
    logging.info("Select all reminder data for ... good date.")
    a = m.select2dict('SELECT * from reminder where event_date = DATE(CURDATE() + INTERVAL 3 DAY)')
 
## pobralim wszystkie dane z przypominajki na dzien dzisiejszy..
## czas skomponowac maila
    for event in a:
        # making a connection to SMTP server
        logging.info("Connecting to SMTP %s:%s server",smtp_server,smtp_port)
        server = smtplib.SMTP(smtp_server, smtp_port)
        logging.debug("Sending EHLO")
        server.ehlo()
        logging.debug("Starting TLS communication")
        server.starttls()
        logging.debug("Sending second EHLO")
        server.ehlo()
        logging.info("Logging into SMTP server as %s",smtp_user)
        server.login(smtp_user, smtp_passwd)
 
        # gather all neccessary data from 'reminder' table
        mail=dict()
        mail['to'] = event['email']
        logging.debug("E-MAIL TO: %s",mail['to'])
        mail['subject'] = 'Przypominajka: %s' % event['event_name']
        logging.debug("E-MAIL SUBJECT: %s",mail['subject'])
        mail['content'] = event['content']
        logging.debug("E-MAIL CONTENT: %s",mail['content'])
 
        # building email message with HEADERS and CONTENT
        header='To:'+mail['to']+'\n'+'From:"Makowa Panienka"<'+smtp_user+'>\n'+'Subject:'+mail['subject']+'\n'
        msg = header+'\n'+mail['content']+'\n\n'
 
        # sending email
        logging.info("Sending an email to: %s",mail['to'])
        server.sendmail(smtp_user, mail['to'], msg)
 
        # closing SMTP connection
        logging.info("Closing connection to SMTP server.")
        server.close()
        # print 'done!'
    logging.info("Shutting down makova-reminder-cron job.")
    exit(0)

Comments