Hello,
It’s been a while since I posted new content on my blog. Well, let’s get to my recent findings.
It seems like Oracle degraded/removed certain functionality in Python that comes with Hyperion 11.2.4 Version. In the past, I posted this blog; the same functionality doesn’t work now as MIMEApplication is not part of the package.
I had to re-do the code and fix certain content. Here is the code snippet for your reference.
If you have any query, or suggestions drop me a comment to hfm.trainer@gmail.com
#========================================================================================= # FDMEE Email Alert with PDF Attached for Check Error # Purpose: To notify user(s) if there is a failure of Check Rule to Any Location in # FDMEE with respective PDF file attached to email for quick action. # #Author: Satyanadh Kolluri (www.satyanadh.in) # Oracle Knowledge Documents # #Change Tracker: #Ticket# Date Change Description #======= ========== ============================================================== # # # # #========================================================================================= #Global Import import com.hyperion.aif.scripting.API as API import smtplib import os
import time from email.MIMEMultipart import MIMEMultipart from email.Encoders import encode_base64 from email.MIMEText import MIMEText #FDMEE Convert to Variable sTargetAppName = fdmContext["TARGETAPPNAME"] fdmProcessID = fdmContext["LOADID"] sRuleName = fdmContext["RULENAME"] sLocName = fdmContext["LOCNAME"] sPeriod = fdmContext["PERIODNAME"] sSource = fdmContext["SOURCENAME"] #FDMEE Process ID Details ProcessID = fdmAPI.getBatchJobDetails(fdmProcessID) status = fdmAPI.getProcessStates(fdmProcessID) expStatus = str(status["EXPSTATUS"]) chkStatus = str(status["CHKSTATUS"]) statusmsg = fdmAPI.getCustomMessage(fdmProcessID) #Email Output Preparation global sBatchDetails, sBatchDetails1, sBatchDetails2, sBatchDetails3, sBatchDetails4, sBatchDetails5, sBatchDetails6, sBatchDetails7, sBatchDetails8, sBatchDetails9, sBatchDetails10 if str(status["EXPSTATUS"]) == "1" and str(status["CHKSTATUS"]) == "0": try: sBatchDetails = "============================================================= \n" sBatchDetails1 = "Location Name : %s \n" % sLocName sBatchDetails2 = "Period : %s \n" % sPeriod sBatchDetails3 = "Process ID : %s \n" % fdmProcessID sBatchDetails4 = "Rule Executed : %s \n" % sRuleName sBatchDetails5 = "Data Source %s \n" % sSource sBatchDetails6 = "\n" sBatchDetails7 = "Status : Check Failed.\n" sBatchDetails8 = "\n" sBatchDetails9 = "%s \n" % mResults sBatchDetails10 = "============================================================= \n" #Send Email #Subject mail_subject = "DEV - FDMEE Check Failed for %s" % (sLocName) #Sender [Enter your Sender Email Address] mail_sender = "Hyperion_FDMEE@satyanadh.in" #To List [Enter your To List under section mail_to, CC List under mail_cc, if by Application Specific modify Application name else remove elif string] if str(sTargetAppName) == "HFMMGMT": mail_to = ['hyperion@satyanadh.in'] mail_cc = ['XXX@YYY.com', 'XXXGroup@yyy.com'] elif str(sTargetAppName) == "HFMLGL": mail_to = ['hyperion@satyanadh.in'] mail_cc = ['XXX@YYY.com', 'XXXGroup@yyy.com'] #Body mail_txt = "Hi, \n DEV - FDMEE Load Status: %s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n \n Regards, \n Hyperion Administrator" %(sBatchDetails, sBatchDetails1, sBatchDetails2, sBatchDetails3, sBatchDetails4, sBatchDetails5, sBatchDetails6, sBatchDetails7, sBatchDetails8, sBatchDetails9, sBatchDetails10) mail_html = """\ <html> <head></head> <body> <pr>Hi,<br> Please find below the status for Data Load from DEV Instance <br> %s <br> %s <br> %s <br> %s <br> %s <br> %s <br> %s <br> %s <br> %s <br> %s <br> %s <br> <br> Regards,<br> Hyperion Admin <br> <br> <br> Note: This is an Auto Generated Email, please do not reply to this email id. </p> </body> </html> """ % (sBatchDetails, sBatchDetails1, sBatchDetails2, sBatchDetails3, sBatchDetails4, sBatchDetails5, sBatchDetails6, sBatchDetails7, sBatchDetails8, sBatchDetails9, sBatchDetails10) #Mail Consolidate #MIMEMultipart changed from alternative to mixed, this helps in displaying the email output in iPhone / Android in readable format mail = MIMEMultipart('mixed') mail['Subject'] = mail_subject mail['FROM']=mail_sender mail['To']=", ".join(mail_to) mail_p2=MIMEText(mail_html, 'html', 'utf-8') #mail.attach(mail_p1) mail.attach(mail_p2)
time.sleep(10)
#Attachment os.chdir("D:\Oracle\Middleware\user_projects\HFM1\FDMEE\outbox\reports") LogFile = "%s.pdf" % (fdmProcessID) fLog = open(LogFile, "rb") #Ensures PDF File is not coming as Blank part = MIMEApplication(fLog.read(), 'pdf') fLog.close() part.add_header('Content-Disposition', 'attachment; filename="%s"' % LogFile) mail.attach(part) #Connection to SMTP #Enter SMTP Server Details, In case your server do require authentication modify authentication parameter below and uncomment s = smtplib.SMTP("mail.satyanadh.in:25") s.sendmail(mail_sender, mail_to+mail_cc, mail.as_string()) s.quit() except e: print str(e)
No responses yet