# -*- 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