Hello there, just posting a Python script that I wrote and embedded in Omniscope to send email when I find a certain value in my dataset (i.e. a failure condition)
import pandas as pd import smtplib mail_user = 'firstname.lastname@example.org' mail_password = 'yourpassword' sent_from = mail_user to = ['email@example.com', 'firstname.lastname@example.org] subject = 'Important Message' body = '' #Check a special condition for index, row in input_data.iterrows(): if (row == "FAILURE"): #Construct the message to send body = 'Failure found - ' + row #Do not touch these lines below until the break keyword! email_text = """\ From: %s To: %s Subject: %s %s """ % (sent_from, ", ".join(to), subject, body) break #If the condition was met, send the email if body: #Email Server config, and connect server = smtplib.SMTP_SSL('smtp.yourserver.com', 465) server.ehlo() #Next, log in to the server server.login(mail_user, mail_password) #Send the mail server.sendmail(sent_from, to, email_text) #Quit the connection server.quit() #Output the message sent to Python block output output_data = pd.DataFrame(["Sent "+ body], columns=["Result"]) else: #do nothing, output no message was sent output_data = pd.DataFrame(["Nothing to send"], columns=["Result"])
Thank you Deborah,
For more complex email you can use the Python modules email.MIMEMultipart and email.MIMEText, found in the basic Python libraries.
N.B. we will be adding the email block in Omniscope 2019 (in Q1). In the meantime your script is a super valid and useful alternative!