Volver al inicio

Automatización con Python

Script de Automatización de Reportes

Envío automático de reportes semanales por correo electrónico

email_automation.py
Python
import smtplib
import schedule
import time
from email.message import EmailMessage
from datetime import datetime

# Configuración del correo
EMAIL_ADDRESS = 'tucorreo@example.com'
EMAIL_PASSWORD = 'tu_contraseña'
DESTINATARIOS = ['destinatario1@example.com', 'destinatario2@example.com']

# Ruta del reporte a enviar
REPORTE_PATH = 'ruta/del/reporte_semanal.xlsx'

def enviar_reporte():
    msg = EmailMessage()
    msg['Subject'] = f'Reporte Semanal - {datetime.now().strftime("%d/%m/%Y")}'
    msg['From'] = EMAIL_ADDRESS
    msg['To'] = ', '.join(DESTINATARIOS)
    msg.set_content('Hola,\n\nAdjunto encontrarás el reporte semanal.\n\nSaludos.')

    # Adjuntar archivo
    with open(REPORTE_PATH, 'rb') as f:
        file_data = f.read()
        file_name = f.name.split('/')[-1]

    msg.add_attachment(file_data, maintype='application', subtype='octet-stream', filename=file_name)

    # Enviar correo
    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
        smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
        smtp.send_message(msg)

    print(f"Reporte enviado el {datetime.now().strftime('%d/%m/%Y %H:%M:%S')}")

# Programar el envío cada lunes a las 9:00 AM
schedule.every().monday.at("09:00").do(enviar_reporte)

print("Esperando al próximo envío del reporte semanal...")
while True:
    schedule.run_pending()
    time.sleep(60)

📬 Automatización del Envío Semanal de Reportes por Correo

Este script en Python automatiza el proceso de envío de reportes semanales por correo electrónico. Está diseñado para ejecutarse en segundo plano y revisar constantemente si es el momento programado para realizar el envío, lo que elimina la necesidad de hacerlo manualmente.

Cada lunes a las 9:00 de la mañana, el script genera un correo electrónico con un asunto personalizado que incluye la fecha actual. En el cuerpo del mensaje se incluye un breve texto explicativo, y se adjunta automáticamente un archivo (como un reporte en formato Excel) desde una ruta específica del sistema.

El envío se realiza a través de un servidor de correo seguro (por ejemplo, Gmail), utilizando autenticación para garantizar que el mensaje provenga de una cuenta válida. Una vez que se adjunta el archivo y se configura el mensaje, se envía a una lista de destinatarios definida previamente.

Esta automatización es especialmente útil para tareas recurrentes como informes de ventas, reportes de desempeño, o cualquier otro archivo que deba compartirse de manera periódica. Ahorra tiempo, minimiza errores humanos y garantiza consistencia en la entrega de la información.

Características Técnicas

Bibliotecas utilizadas

  • smtplib - Para el envío de correos electrónicos
  • schedule - Para la programación de tareas
  • email.message - Para la creación de mensajes
  • datetime - Para el manejo de fechas y horas

Funcionalidades

  • Envío automático programado
  • Adjuntar archivos al correo
  • Personalización del asunto y cuerpo
  • Múltiples destinatarios