1
resposta

Criar um email automatico com um arquivo em excel

Não estou conseguindo alocar o arquivo poderiam me ajudar pfv.

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import datetime
import schedule
import pandas as pd

# Definir as informações do remetente e do destinatário
remetente = 'ccauan360@gmail.com'
senha = '065123065123'
destinatario = 'cauancarvalhoo@gmail.com'

# Função para enviar o e-mail com o anexo do Excel
def enviar_email():
    # Verificar se hoje é sexta-feira
    hoje = datetime.datetime.now()
    if hoje.weekday() != 4: # 4 é sexta-feira (segunda-feira é 0)
        return
    
    # Criar a mensagem
    mensagem = MIMEMultipart()
    mensagem['De'] = remetente
    mensagem['Para'] = destinatario
    mensagem['Assunto'] = 'Relatório Automático "Book de Gestão"'

    # Adicionar o corpo da mensagem
    texto = 'Olá Time Agro! Bom dia, Segue o relatório de vocês.'
    mensagem.attach(MIMEText(texto, 'plain', 'utf-8'))

    # Anexar o arquivo Excel
    df = pd.read_excel('caminho/do/arquivo.xlsx')
    with pd.ExcelWriter('relatorio.xlsx') as writer:
        df.to_excel(writer, index=False)
    with open('relatorio.xlsx', 'rb') as arquivo:
        anexo = MIMEApplication(arquivo.read(), _subtype='xlsx')
        anexo.add_header('Content-Disposition', 'attachment', filename='relatorio.xlsx')
        mensagem.attach(anexo)

    # Enviar o e-mail
    with smtplib.SMTP('ccauan360@gmail.com', 587) as smtp:
        smtp.starttls()
        smtp.login(remetente, senha)
        smtp.send_message(mensagem)

# Agendar a execução do script toda sexta-feira às 10h da manhã
schedule.every().friday.at("10:00").do(enviar_email)

# Loop principal do script
while True:
    schedule.run_pending()
1 resposta

Olá, Cauan! Tudo bem com você?

Peço desculpa pela demora em responder o seu tópico.

Primeiramente, é importante garantir que o caminho do arquivo que você está tentando anexar esteja correto. Por exemplo, se o arquivo estiver na mesma pasta do seu script, você pode apenas colocar o nome do arquivo. Se não, você precisa especificar o caminho completo. Aqui está um exemplo:

df = pd.read_excel('meu_arquivo.xlsx')  # Se o arquivo estiver na mesma pasta do script
df = pd.read_excel('C:/Users/MeuNome/Documentos/meu_arquivo.xlsx')  # Se o arquivo estiver em outra pasta

Espero que essa sugestão resolva o problema! Mas lembre-se, pode ser que existam outros problemas que não consegui identificar apenas com o código que você compartilhou. Portanto, se você ainda estiver com problemas, talvez seja útil compartilhar mais detalhes ou a mensagem de erro que você está recebendo.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.