Commit 28072d2c by arun.uday

version 3

parent 0c3f0325
...@@ -2,5 +2,11 @@ ...@@ -2,5 +2,11 @@
from scripts.services.send_mail import create_mail from scripts.services.send_mail import create_mail
print("Using python to send mail and add attachments") print("Using python to send mail and add attachments")
# xnoeryrnirtbecdg # sender password xnoeryrnirtbecdg
create_mail() sent_conf = create_mail()
if sent_conf:
print("Mail sent successfully")
else:
print("Mail not sent")
# host
[host]
server_host = smtp.gmail.com
# port
[port]
port = 465
# excel file path
[file_path]
excel_path = scripts/utils/task3.xlsx
file_name = task3.xlsx
import configparser
# using configparser for getting config variables from application.conf
config = configparser.ConfigParser()
config.read("conf/application.conf")
host_address = config.get("host", "server_host")
port_number = config.get("port", "port")
path_excel = config['file_path']['excel_path']
file_name = config.get("file_path", "file_name")
# host
server_host = 'smtp.gmail.com'
# port
port = 465
# reading excel file contents # reading excel file contents
import pandas as pd import pandas as pd
from scripts.config.app_path_config import path_excel
from scripts.core.handlers.format_body_email import data_format
def email_content_excel(): def email_content_excel():
data_task = pd.read_excel("scripts/utils/task3.xlsx") data_task = pd.read_excel(path_excel)
column_mean = {} column_mean = {}
max_column = {} max_column = {}
min_column = {} min_column = {}
...@@ -17,12 +20,12 @@ def email_content_excel(): ...@@ -17,12 +20,12 @@ def email_content_excel():
# timestamp of min values # timestamp of min values
timestamp_min = data_task['Timestamp'][data_task[col].idxmin()] timestamp_min = data_task['Timestamp'][data_task[col].idxmin()]
# max values of each columns # max values of each columns
max_val = data_task[col][data_task[col].idxmax()] max_val = round(data_task[col][data_task[col].idxmax()], 2)
# min values of each columns # min values of each columns
min_val = data_task[col][data_task[col].idxmin()] min_val = round(data_task[col][data_task[col].idxmin()], 2)
# appending mean, max, min in to dictionaries # appending mean, max, min in to dictionaries
column_mean.update({col: data_task[col].mean()}) column_mean.update({col: round(data_task[col].mean(), 2)})
max_column.update({col: [timestamp_max, max_val]}) max_column.update({col: [timestamp_max, max_val]})
min_column.update({col: [timestamp_min, min_val]}) min_column.update({col: [timestamp_min, min_val]})
return f'average values{column_mean} \n\n\nmaximum values: {max_column}, \n\n\nMinimum Value :{min_column}' return data_format(column_mean, max_column, min_column)
# formatting the body for better view
import pandas as pd
from scripts.core.handlers.frames_format import format_data_frames
def data_format(column_mean, max_col, min_col):
# using generators to split the dictionary values
mean_col = (col for col in column_mean.items())
max_cols = (col for col in max_col.items())
min_cols = (col for col in min_col.items())
# creating dataframes form generators
mean_frame = pd.DataFrame(mean_col, columns=['Column_Names', 'Mean'])
max_frame = pd.DataFrame(max_cols, columns=['Column_Names', 't_Max'])
min_frame = pd.DataFrame(min_cols, columns=['Column_Names', 't_Min'])
# splitting list in to separate columns
max_frame[['Timestamp', 'Max_Values']] = max_frame['t_Max'].apply(pd.Series)
max_frame = max_frame.drop(columns=['t_Max'], axis=1)
min_frame[['Timestamp', 'Min_Values']] = min_frame['t_Min'].apply(pd.Series)
min_frame = min_frame.drop(columns=['t_Min'], axis=1)
return format_data_frames(mean_frame, max_frame, min_frame)
# format dataframes
from tabulate import tabulate
def format_data_frames(mean_frame, max_frame, min_frame):
mean_frame = tabulate(mean_frame, headers=mean_frame.columns)
max_frame = tabulate(max_frame, headers=max_frame.columns)
min_frame = tabulate(min_frame, headers=min_frame.columns)
return f'Mean Values \n{mean_frame} \n\n Max values of each columns \n{max_frame}\n\n' \
f' Min values of each columns\n{min_frame}'
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import ssl import ssl
from email.message import EmailMessage from email.message import EmailMessage
from scripts.config.app_path_config import path_excel, file_name
from scripts.core.handlers.excel_file_content import email_content_excel from scripts.core.handlers.excel_file_content import email_content_excel
...@@ -10,13 +11,14 @@ def content_create(sender_name, receiver_email, subject): ...@@ -10,13 +11,14 @@ def content_create(sender_name, receiver_email, subject):
mail['From'] = sender_name mail['From'] = sender_name
mail['To'] = receiver_email mail['To'] = receiver_email
mail['Subject'] = subject mail['Subject'] = subject
email_content_excel()
body = email_content_excel() body = email_content_excel()
mail.set_content(body) mail.set_content(body)
context = '' context = ''
try: try:
with open("scripts/utils/task3.xlsx", "rb") as file: with open(path_excel, "rb") as file:
file_data = file.read() file_data = file.read()
mail.add_attachment(file_data, maintype='application', subtype='xlsx', filename="task3.xlsx") mail.add_attachment(file_data, maintype='application', subtype='xlsx', filename=file_name)
context = ssl.create_default_context() context = ssl.create_default_context()
except Exception as e: except Exception as e:
print(e) print(e)
......
# connecting to smtp # connecting to smtp
import smtplib import smtplib
from scripts.constants.server_constants import server_host, port from scripts.config.app_path_config import host_address, port_number
def mail_send(email_address, email_password, receiver_email, mail, context): def mail_send(email_address, email_password, receiver_email, mail, context):
# connecting to server # connecting to server
try: try:
with smtplib.SMTP_SSL(server_host, port, context=context) as smtp: with smtplib.SMTP_SSL(host_address, port_number, context=context) as smtp:
smtp.login(email_address, email_password) smtp.login(email_address, email_password)
# sending the mail
smtp.sendmail(email_address, receiver_email, mail.as_string()) smtp.sendmail(email_address, receiver_email, mail.as_string())
except Exception as e: except Exception as e:
print(e) print(e)
return False
else:
return True
# reading user inputs
from scripts.core.handlers.mail_content import content_create from scripts.core.handlers.mail_content import content_create
from scripts.core.handlers.mail_send_smtp import mail_send from scripts.core.handlers.mail_send_smtp import mail_send
...@@ -13,8 +14,8 @@ def create_mail(): ...@@ -13,8 +14,8 @@ def create_mail():
receiver_email.append(input()) receiver_email.append(input())
num_cc = num_cc - 1 num_cc = num_cc - 1
subject = input("Enter your subject") subject = input("Enter your subject")
content_create(sender_name, receiver_email, subject)
# mail contents
mail, context = content_create(sender_name, receiver_email, subject) mail, context = content_create(sender_name, receiver_email, subject)
# send emails using smtp # send emails using smtp
mail_send(email_address, email_password, receiver_email, mail, context) return mail_send(email_address, email_password, receiver_email, mail, context)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment