import streamlit as st import pandas as pd import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import gspread from oauth2client.service_account import ServiceAccountCredentials from streamlit_option_menu import option_menu # Define your email server details EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = 'ninadmandavkar@gofynd.com' EMAIL_HOST_PASSWORD = 'vxay jiss cctw lsdo' html_title = """

Alerter

""" st.markdown(html_title, unsafe_allow_html=True) menu_options = [ {"label": "Internal users", "icon": "📄", "description": "Upload a document and schedule it for email"}, {"label": "External users", "icon": "📊", "description": "Schedule an email with BigQuery data"} ] # Create the custom option menu selected_option = option_menu( menu_title="Select Integration", # Title of the menu options=[option["label"] for option in menu_options], # Displayed options icons=[option["icon"] for option in menu_options], # Icons next to options menu_icon="cast", # Icon for the entire menu default_index=0, # Default selected option orientation="horizontal" # Orientation of the menu (can be vertical or horizontal) ) if selected_option == "External users": html_subject = """

Select an option

""" st.markdown(html_subject, unsafe_allow_html=True) upload_option = st.radio("", ["Upload Spreadsheet (CSV or Excel)", "Google Sheets URL"]) if upload_option == "Upload Spreadsheet (CSV or Excel)": html_subject = """

Upload documents

""" st.markdown(html_subject, unsafe_allow_html=True) uploaded_file = st.file_uploader("", type=["csv", "xlsx"]) if uploaded_file: # Load the data if uploaded_file.name.endswith(".csv"): df = pd.read_csv(uploaded_file) else: df = pd.read_excel(uploaded_file) st.write("") st.write("") elif upload_option == "Google Sheets URL": html_subject = """

Enter Google sheets url

""" st.markdown(html_subject, unsafe_allow_html=True) sheet_url = st.text_input("") if sheet_url: try: # Define the scope scope = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/drive'] # Add credentials creds = ServiceAccountCredentials.from_json_keyfile_name('fynd-db-48954327ef17.json', scope) client = gspread.authorize(creds) # Get the sheet data sheet = client.open_by_url(sheet_url).sheet1 data = sheet.get_all_records() df = pd.DataFrame(data) except Exception as e: st.error(f"Failed to load Google Sheets: {str(e)}") if 'df' in locals(): # Display the data (excluding the 'status' column) df = df.drop(columns=['status'], errors='ignore') st.dataframe(df) button_styles = """ """ st.markdown(button_styles, unsafe_allow_html=True) if st.button("Send Emails"): # Send emails for index, row in df.iterrows(): email = row['Email Addresses'] subject = row['Subject'] message = row['Message'] cc_addresses = row['CC Addresses'].split(',') if 'CC Addresses' in row else [] Folder_IDs = row['Folder IDs'] # company_name = row['Company_Name'] # company_id = row['Company_ID'] # Create the email msg = MIMEMultipart() msg['From'] = EMAIL_HOST_USER msg['To'] = email msg['Subject'] = subject if cc_addresses: msg['Cc'] = ','.join(cc_addresses) body = f"\n\n{Folder_IDs}" msg.attach(MIMEText(body, 'plain')) try: # Send the email with smtplib.SMTP(EMAIL_HOST, EMAIL_PORT) as server: server.starttls() server.login(EMAIL_HOST_USER, EMAIL_HOST_PASSWORD) server.send_message(msg) st.success(f"Email sent to {email}") except Exception as e: st.error(f"Failed to send email to {email}: {str(e)}") elif selected_option == "Internal users": with open('ap.py') as file: exec(file.read())