
Proyecto python · desktopemailDrago Mail Sender
App de escritorio para enviar campañas de email con tu propio servidor SMTP: cuerpo HTML o de imagen, pie legal a medida, progreso en vivo y envíos programados.
- Tipo
- Escritorio
- Motor
- Flask + WebView
- Envío
- SMTP propio
- Sistemas
- Win · Mac · Linux
- año
- 2026
Qué es Drago Mail Sender
Drago Mail Sender es una aplicación de escritorio para mandar correos masivos a una lista de clientes desde tu propia cuenta: Gmail con contraseña de aplicación, el SMTP de tu dominio o cualquier otro. Cargas los contactos desde un CSV o un Excel, montas el correo, te lo envías de prueba y, cuando está bien, lo lanzas a toda la lista o lo programas para más tarde.
Nació para enviar campañas sin cuotas mensuales ni los límites de un plan gratuito. El generador de pie de correo es, de hecho, la plantilla que diseñé para los envíos de SET PRO. El código es privado.

La aplicación
Editor de correos: asunto con {nombre}, modo HTML o imagen y vista previa
Contactos: carga de CSV o Excel y formato recomendado
Credenciales SMTP, con la contraseña cifrada en el equipo
HTML o imagen
El cuerpo es código HTML o una sola imagen (ideal para diseños de Canva) con enlace de destino y texto de vista previa para la bandeja.
Listas CSV y Excel
Prueba UTF-8, Latin-1 y CP1252, enseña una vista previa para elegir la columna de email y la de nombre, y descarta direcciones sin arroba.
Pie legal a medida
Editor visual o en código: logo, Instagram y TikTok, texto legal, cláusula RGPD/LSSI y enlace de baja. Se guarda entre sesiones.
Progreso en vivo
El envío masivo transmite cada resultado por Server-Sent Events: enviado o fallido con su error, con una pausa de 0,5 s entre correos.
Envíos programados
Fecha y hora futuras con APScheduler. El asunto admite {nombre} para personalizarlo con el nombre de cada destinatario.
Diseños en .dms
Exporta el correo completo (asunto, cuerpo, pie e imágenes) a un fichero .dms propio para reutilizarlo o compartirlo.
Una web local con ventana propia
Por dentro es una aplicación Flask con cuatro blueprints (credenciales, contactos, editor y acerca de) y una capa de servicios. desktop.py arranca Flask en un hilo en local, espera a que responda y abre una ventana nativa con pywebview: WebView2 en Windows, WebKit en macOS y Qt WebEngine en Linux. También puede abrirse en el navegador con run.py.
PyInstaller empaqueta todo en Drago Mail Sender.exe o .app sin consola. Las credenciales SMTP se guardan en la carpeta de configuración de cada sistema, con la contraseña cifrada con Fernet y el fichero en permisos 600.
Cómo se construye cada correo
La parte difícil no es enviar, es que el correo llegue bien y se vea igual en todos los clientes. Cada mensaje sale como multipart/related con una parte alternative dentro: una versión en texto plano generada desde el HTML (un correo sin ella huele a spam) y la versión HTML.
Las imágenes subidas no dependen de ningún servidor: las que van en base64 se extraen, se adjuntan en línea y el HTML las referencia por cid:. En modo imagen se genera una plantilla de 600 px con un texto de vista previa oculto, color-scheme: light only y fondo #fffffe, un blanco que el modo oscuro de Gmail no invierte. Cada envío lleva su Message-ID, fecha y remitente con nombre visible.
El bug de «toca para descargar»
En iCloud y Apple Mail las imágenes llegaban como adjuntos que había que tocar para descargar, y Gmail las mostraba como «noname». Eran dos causas: la librería estándar de Python añade la cabecera MIME-Version a cada imagen, y Apple interpreta esas partes como piezas independientes; y las imágenes iban sin nombre de fichero. La solución fue borrar esa cabecera de las partes internas y darle a cada imagen un nombre y una disposición inline.
Límites conocidos
Los envíos programados viven en memoria: si cierras la app antes de la hora, no salen, y los fallos de un envío programado no se registran. Abre una conexión SMTP por destinatario; las listas grandes van despacio y mandan los límites de tu proveedor.
Historia del proyecto
La construí en dos sesiones, el 1 y el 7 de febrero de 2026. La primera dejó casi todo el núcleo: credenciales cifradas, contactos, editor con vista previa, imágenes por CID, envío con progreso y programación. La segunda fue de cómo se ve el correo al llegar: el constructor visual del pie, la plantilla de 600 px que resiste el modo oscuro, el arreglo de iCloud, la exportación a .dms, una página para importar diseños y la guía para compilar el .exe en Windows.
Tecnologías
- Python 3.10+
- Flask 3 + Jinja2
- pywebview
- PyQt6 + Qt WebEngine (Linux)
- pandas + openpyxl
- APScheduler
- cryptography (Fernet)
- smtplib
- PyInstaller
Compatibilidad
versión 1.0 en todos
| Dispositivo | Estado |
|---|---|
| Windows 10+ (con WebView2) | Funciona |
| macOS 10.13+ | Funciona |
| Linux (con PyQt6) | Funciona |
Publicaciones relacionadas

SET PRO
Tienda online de pádel hecha a medida: pagos con Redsys, Bizum y PayPal, y almacén conectado.

DRAGO Model Runner
GUI de escritorio estilo Matrix para chatear con LLMs locales vía Ollama y crearlos desde GGUF.

Media Downloader
Baja vídeo o audio de una docena de plataformas, lo transcribe con Whisper y lo sube por SFTP.
Comentarios
0 comentarios







