From d533a3094af74680bff7795c9b52dc657ee51b09 Mon Sep 17 00:00:00 2001 From: wate <110754234+WateTaks@users.noreply.github.com> Date: Thu, 20 Nov 2025 17:43:15 -0300 Subject: [PATCH 1/2] feat: add certificate script --- envia_certificados.py | 79 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 envia_certificados.py diff --git a/envia_certificados.py b/envia_certificados.py new file mode 100644 index 0000000..8bf3284 --- /dev/null +++ b/envia_certificados.py @@ -0,0 +1,79 @@ +import os +from dotenv import load_dotenv +import smtplib +from email.message import EmailMessage +import csv + +load_dotenv() +FILENAME = os.getenv('FILENAME') +FOLDER = os.getenv('FOLDER') +SENDER_EMAIL = str(os.getenv('SENDER_EMAIL')) +PASSWORD = str(os.getenv('PASSWORD')) + +if FILENAME is None: + raise ValueError("Missing csv file") +if FOLDER is None: + raise ValueError("Missing FOLDER") + +# Tratamento dos dados +def load_csv(filename: str) -> dict[str, str]: + data = {} + with open(filename, 'r') as file: + reader = csv.DictReader(file) + for row in reader: + data[row['nome']] = row['email'] + + return data + +# Envia um email com o arquivo em específico +def send_email(filename: str, email: str, name: str) -> None: + file_path = os.path.join(FOLDER, filename) + + print("Arguments passed:", file_path, email, name) + + smtp_server = 'smtp.gmail.com' + smtp_port = 465 + + # Define o conteúdo do email + msg = EmailMessage() + msg['Subject'] = 'Certificado de Participação - XV Semana da Computação' + msg['From'] = SENDER_EMAIL + msg['To'] = email + + msg.set_content(f"""\ +Olá {name}! +Muito obrigado por participar da XV Semana da Computação! +O certificado de participação, com as horas totais em palestras participadas, se encontra em anexo. + +Nós da Symcomp agradecemos pela atenção :)""" + ) + + # Faz o attach do PDF + with open(file_path, 'rb') as file: + file_data = file.read() + msg.add_attachment(file_data, + maintype='application', + subtype='pdf', + filename=filename) + + # Conecta ao servidor SMTP e envia o email + try: + with smtplib.SMTP_SSL(smtp_server, smtp_port) as server: + server.login(SENDER_EMAIL, PASSWORD) + server.send_message(msg) + print(f"Email to {email} sent successfully!") + except Exception as e: + print(f"Error sending email: {e}") + + print() + +# Envio dos emails em massa +data: dict[str, str] = load_csv(FILENAME) +names: list[str] = os.listdir(FOLDER) + +for name in names: + actual_name: str = name[:-4] + email: str = data[actual_name] + send_email(name, email, actual_name) + +print("Process finished!") From 347b78ffd166705cf749bca5da03f8ca1c7b4063 Mon Sep 17 00:00:00 2001 From: wate <110754234+WateTaks@users.noreply.github.com> Date: Thu, 20 Nov 2025 17:53:25 -0300 Subject: [PATCH 2/2] fix: fixes getenv variable name --- envia_certificados.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/envia_certificados.py b/envia_certificados.py index 8bf3284..17630ee 100644 --- a/envia_certificados.py +++ b/envia_certificados.py @@ -7,8 +7,8 @@ load_dotenv() FILENAME = os.getenv('FILENAME') FOLDER = os.getenv('FOLDER') -SENDER_EMAIL = str(os.getenv('SENDER_EMAIL')) -PASSWORD = str(os.getenv('PASSWORD')) +SENDER_EMAIL = str(os.getenv('EMAIL_USER')) +PASSWORD = str(os.getenv('EMAIL_PASSWORD')) if FILENAME is None: raise ValueError("Missing csv file")