Data-USB Mongo Mail
Brought to you by:
camilogaitan1
| File | Date | Author | Commit |
|---|---|---|---|
| app | 2026-02-20 |
|
[1fd607] Ajuste tabla de aprobacion visual y funcionalidad |
| .gitignore | 2025-05-20 |
|
[7fe84b] ajustes nuevos |
| README.md | 2026-03-18 |
|
[86c530] Readme Mailer |
| requirements.txt | 2025-06-20 |
|
[e88a0e] Creacion de flujo completo para recepcion de ca... |
| sincronizar_correos.py | 2026-02-05 |
|
[03c699] Ajuste de nueva version de mail aecsa |
Mail Aecsa es una aplicación web construida con FastAPI/Flask‑style (Starlette) que permite a los usuarios conectarse a un servidor SMTP para leer, filtrar y enviar correos. La arquitectura se organiza en cinco paquetes clave:
index.html que muestra la UI del cliente de correo.| Sección | Descripción |
|---|---|
| 🚀 Instalación | Requisitos, .env, paquetes. |
| ⚙️ Configuración | Variables de entorno (settings.py). |
| 🔄 Flujo de Trabajo | Inicio → autenticación → consultas → respuestas / aprobaciones. |
| 📬 Endpoints | POST /auth, /email/init, /consultar-alias … (ver lista completa abajo). |
| 🛠️ Operaciones Internas | CorreoCliente.conexion(), MongoConector.guardar_correos_bulk() … |
| 📁 Estructura de Directorios | Rutas y responsabilidades. |
| 👥 Contribuyentes | Autor, licencias, agradecimientos. |
# Clonar el proyecto
git clone git@gitlab.aecsa.co:aecsoft/transversales/mail-mongo.git
# Crear entorno virtual e instalar dependencias
python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
pip install -r requirements.txt
El archivo .env debe contener al menos:
AECMAIL_SERVER_COM="smtp.comcorreo.co"
AECMAIL_SERVER_94="smtp.94correo.com"
AECMAIL_PORT=587
EMAIL_HOST="imap.mailserver.com"
SMTP_HOST="smtp.gmail.com"
PORT_SMTP=465
HOST_MONGO="mongodb.local"
PORT_MONGO=27017
DB_NAME_MONGO="mailmig"
HOST_MYSQL="localhost"
USER_MYSQL="root"
PASS_MYSQL=""
NUEVO_AECSOFT_AUTH_KEY="claveapi123"
APP_HOST="0.0.0.0"
APP_PORT=8000
SECRET_KEY="supersecreto"
ADJUNTO_CORREO=20
PAGINACION_CORREO=50
MAX_ATTACHMENT_SIZE_MB=10
ALGORITHM="HS256"
ENTORNO_LOCAL=1
INFO_CUENTAS=[]
USERNAME_API=""
PASSWORD_API=""
URL_API="https://api.example.com"
URL_AECSOFT="https://aecsoft.com"
URL_APP="http://localhost:8000"
| Paso | Acción |
|---|---|
1. Inicio – GET /mail_aecsa (renderiza index.html). |
|
2. Autenticación – POST /auth. Crea objeto CorreoCliente, guarda token JWT y redirige con /email/init. |
|
3. Inicialización – /email/init valida credenciales y configura sesión. |
|
4. Consulta de Correos – POST /consultar-correo. Devuelve mensajes paginados. |
|
5. Adjuntos – GET /descargar-adjunto?msg_idx=...&part_idx=... |
POST /auth # Login, crea token y firma
GET /email/init # Configura la sesión con parámetros decodificados
GET /mail_aecsa # Renderiza vista principal (Jinja2)
POST /consultar-alias # Busca remitentes por cartera
POST /consultar-correo # Devuelve correos filtrados y paginados
POST /get-arco ... # Operaciones de AECSoft y aprobaciones
PUT /aprobacion-envio # Actualiza estado de aprobación
GET /descargar-adjunto # Descarga archivo adjunto
Tip: Todos los endpoints que manipulan correo usan
Depends(get_correo_cliente)oDepends(get_mongo_conexion)para inyectar la conexión correspondiente.
CorreoCliente – Clase en app/auth/correo_conexion.py. Encapsula conexiones IMAP y SMTP, manejo de configuración por dominio.MongoConector (CorreoMongo) – Guarda y consulta correos con índices basados en idx, usuario.ConexionCartera – Wrapper sobre MySQL que ejecuta queries dinámicos para la lógica de carteras (funciones en utils/consulta_sql_api.py).app/
├─ auth/ # Autenticación y conexiones a DB
│ ├─ generara_auth.py # JWT & firma
│ ├─ correo_conexion.py
│ └─ mysql_conexion.py
├─ correo/ # Lógica de email inbound/outbound
│ ├─ buscar_adjuntos.py
│ ├─ consulta_aecsoft.py
│ ├─ ... (flujos de envío y aprobación)
├─ utils/
│ ├─ formateo_fecha.py
│ ├─ ordenar_correos.py
│ └─ consulta_sql_api.py
├─ static/ # assets CSS/JS
├─ templates/ # Jinja2 `index.html`
└─ main.py, config.py, .env
git checkout -b feature/nueva_func pytest). Licencia: MIT (ver LICENSE).