Files
BE_IBL/scripts/keu_send_titipan.py
2026-04-15 15:12:37 +07:00

226 lines
7.3 KiB
Python
Executable File

#!/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","<image-received-att-" + str(idx) + "@pramita.co.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")