Spaces:
Runtime error
Runtime error
| import pandas as pd | |
| from fpdf import FPDF | |
| import streamlit as st | |
| import smtplib | |
| from email.mime.multipart import MIMEMultipart | |
| from email.mime.text import MIMEText | |
| # from email.mime.base import MIMEBase | |
| from email.mime.application import MIMEApplication | |
| # from email import encoders | |
| def export_to_csv(data): | |
| df = pd.DataFrame(data) | |
| csv = df.to_csv(index=False) | |
| return csv | |
| def export_to_pdf(data): | |
| pdf = FPDF() | |
| pdf.add_page() | |
| pdf.set_font("Arial", size=12) | |
| for item in data: | |
| pdf.multi_cell(0, 10, f"Context: {item['context']}") | |
| pdf.multi_cell(0, 10, f"Question: {item['question']}") | |
| pdf.multi_cell(0, 10, f"Answer: {item['answer']}") | |
| pdf.multi_cell(0, 10, f"Options: {', '.join(item['options'])}") | |
| pdf.multi_cell(0, 10, f"Overall Score: {item['overall_score']:.2f}") | |
| pdf.ln(10) | |
| return pdf.output(dest='S').encode('latin-1') | |
| def send_email_with_attachment(email_subject, email_body, recipient_emails, sender_email, sender_password, attachment): | |
| smtp_server = "smtp.gmail.com" # Replace with your SMTP server | |
| smtp_port = 587 # Replace with your SMTP port | |
| # Create the email message | |
| message = MIMEMultipart() | |
| message['From'] = sender_email | |
| message['To'] = ", ".join(recipient_emails) | |
| message['Subject'] = email_subject | |
| message.attach(MIMEText(email_body, 'plain')) | |
| # Attach the feedback data if available | |
| if attachment: | |
| attachment_part = MIMEApplication(attachment.getvalue(), Name="feedback_data.json") | |
| attachment_part['Content-Disposition'] = f'attachment; filename="feedback_data.json"' | |
| message.attach(attachment_part) | |
| # Send the email | |
| try: | |
| with smtplib.SMTP(smtp_server, smtp_port) as server: | |
| server.starttls() | |
| # print(sender_email) | |
| # print(sender_password) | |
| server.login(sender_email, sender_password) | |
| text = message.as_string() | |
| server.sendmail(sender_email, recipient_emails, text) | |
| return True | |
| except Exception as e: | |
| st.error(f"Failed to send email: {str(e)}") | |
| return False | |