#!/usr/bin/python import smtplib import urllib import urllib2 from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email.MIMEImage import MIMEImage from email import Encoders from PyPDF2 import PdfFileWriter, PdfFileReader import StringIO import json import pdb import time import datetime import os import sys #defined variable #testing g_url ="http://localhost/one-api/keu/email_on_hold_titipan/first_reminder" status_url ="http://localhost/one-api/keu/email_on_hold_titipan/log" second_url ="http://localhost/one-api/keu/email_on_hold_titipan/second_reminder" tagihan_awal_url = "http://localhost/one-api/keu/email_on_hold_titipan/tagihan_awal" status_awal_url ="http://localhost/one-api/keu/email_on_hold_titipan/log_awal" subject = "Reminder" email_error = "" def sendEmail(rec,subject,i_msg, arr_url,fname,cc ): server = g_server a_rec = [ x.strip() for x in rec.split(",")] to_addrs = [cc] + a_rec #to_addrs = [rec] xfrom = g_from msg = MIMEMultipart() msg['From'] = g_from msg['To'] = rec msg['Cc'] = cc msg['Subject'] = subject email_error = "" try : msg.attach(MIMEText(i_msg,"html","utf-8")) except: print "Msg Unicode : " + i_msg email_error = "Message Unicode : " + i_msg return False #pdb.set_trace() print "Email : " + rec print "Server : " + server print "Login : " + g_login idx = 1 for url in arr_url: if url != "" : try: u = urllib2.urlopen(url) idx_fname = fname + str(idx) + "-received.jpg" part = MIMEImage(u.read(),name= idx_fname) part.add_header("Content-ID","") part.add_header('X-Attachment-Id', idx_fname) part.add_header('Content-Disposition', 'inline', filename=fname) msg.attach(part) idx = idx+1 except : print "Read Attachment Error : " + ":" + url email_error = "Read Attachment Error : " + url return False rst = True try : s = smtplib.SMTP(server,587) #s.set_debuglevel(5) s.starttls() s.login(g_login,g_password) s.sendmail(xfrom, to_addrs, msg.as_string()) s.close() except smtplib.SMTPException as e: error_message = str(e) print "Error Smtp: " + error_message + "\n" rst = False except: rst =False return rst def post_status(keuID,status): jdata = {"id" : keuID, "status" : status , "note": email_error } data = json.dumps(jdata).encode("utf8") req = urllib2.Request(status_url, data, {'Content-Type': 'application/json'}) f = urllib2.urlopen(req) response = f.read() f.close() def post_status_awal(issueID,status): jdata = {"id" : issueID, "status" : status , "note": email_error } data = json.dumps(jdata).encode("utf8") req = urllib2.Request(status_awal_url, data, {'Content-Type': 'application/json'}) f = urllib2.urlopen(req) response = f.read() f.close() #first reminder email_on_hold = urllib2.urlopen(g_url) dt = json.load(email_on_hold) email_on_hold.close() today = datetime.datetime.today() if dt['status'] == "ERR" : print today.strftime("%Y-%m-%d %H:%M:%S : Sending Email") + " : " + dt["message"] sys.exit() config = dt['config'] data = dt['data'] print today.strftime("%Y-%m-%d %H:%M:%S : Start First Reminder Email") + " : " + str(len(dt["data"])) g_server = config['ConfOnHoldServer'] g_login = config['ConfOnHoldSenderEmail'] g_password = config['ConfOnHoldSenderPassword'] email_name = config['ConfOnHoldSenderName'] email_cc = config['ConfOnHoldCc'] email_cc = "padmanto@gmail.com" g_from = email_name + "<" + g_login + ">" for d in data : email = d['email'] xmessage = d['message'] url = d['attachment'] billNo = d["F_BillNo"] fname = billNo company = d["M_CompanyName"] keuID = d["KeuReminderID"] if sendEmail(email,subject,xmessage,url,fname,email_cc): today = datetime.datetime.today() print today.strftime("%Y-%m-%d %H:%M:%S : Sending Email") + " : " + 'Update Status OK : ' + billNo + " " + company + " to " + email post_status(keuID, "Y") else : today = datetime.datetime.today() print today.strftime("%Y-%m-%d %H:%M:%S : Sending Email") + " : " + 'Update Status ERR : ' + billNo + " " + company + " to " + email post_status(keuID,"E") #second reminder subject = "Final Reminder" second_email_on_hold = urllib2.urlopen(second_url) dt = json.load(second_email_on_hold) today = datetime.datetime.today() if dt['status'] == "ERR" : print today.strftime("%Y-%m-%d %H:%M:%S : Sending Second Reminder Email") + " : " + dt["message"] sys.exit() config = dt['config'] data = dt['data'] second_email_on_hold.close() g_server = config['ConfOnHoldServer'] g_login = config['ConfOnHoldSenderEmail'] g_password = config['ConfOnHoldSenderPassword'] email_name = config['ConfOnHoldSenderName'] email_cc = config['ConfOnHoldCc'] g_from = email_name + "<" + g_login + ">" email_cc = "padmanto@gmail.com" for d in data : email = d['email'] xmessage = d['message'] url = d['attachment'] billNo = d["F_BillNo"] fname = billNo + "-received.jpg" company = d["M_CompanyName"] keuID = d["KeuReminderID"] if sendEmail(email,subject,xmessage,url,fname,email_cc): today = datetime.datetime.today() print today.strftime("%Y-%m-%d %H:%M:%S : Sending Second Reminder Email") + " : " + 'Update Status OK : ' + billNo + " " + company + " to " + email post_status(keuID, "Y") else : today = datetime.datetime.today() print today.strftime("%Y-%m-%d %H:%M:%S : Sending Second Reminder Email") + " : " + 'Update Status ERR : ' + billNo + " " + company + " to " + email post_status(keuID,"E") #tagihan awal subject = "Reminder" tagihan_awal_email = urllib2.urlopen(tagihan_awal_url) dt = json.load(tagihan_awal_email) today = datetime.datetime.today() if dt['status'] == "ERR": print today.strftime("%Y-%m-%d %H:%M:%S : Sending Tagihan Awal Email") + " : " + dt["message"] sys.exit() config = dt['config'] data = dt['data'] tagihan_awal_email.close() g_server = config['ConfOnHoldServer'] g_login = config['ConfOnHoldSenderEmail'] g_password = config['ConfOnHoldSenderPassword'] email_name = config['ConfOnHoldSenderName'] email_cc = config['ConfOnHoldCc'] g_from = email_name + "<" + g_login + ">" for d in data : email = d['email'] xmessage = d['message'] url = d['attachment'] billNo = d["F_BillNo"] company = d["M_CompanyName"] keuID = d["KeuReminderID"] issueID = d["F_BillIssueID"] fname = billNo if sendEmail(email, subject,xmessage,url,fname,email_cc): today = datetime.datetime.today() print today.strftime("%Y-%m-%d %H:%M:%S : Sending Sending Tagihan Awal Email") + " : " + 'Update Status OK : ' + billNo + " " + company + " to " + email post_status_awal(issueID, "S") else : today = datetime.datetime.today() print today.strftime("%Y-%m-%d %H:%M:%S : Sending Sending Tagihan Awal Email") + " : " + 'Update Status ERR : ' + billNo + " " + company + " to " + email post_status_awal(issueID,"E")