Una herramienta Python sin dependencia que le permite enviar correos electrónicos desde la línea de comandos mediante SMTP de Gmail. Instálelo con un solo comando, configúrelo una vez y envíe correos electrónicos desde scripts, flujos de trabajo de automatización o agentes de IA.
El problema
Enviar correos electrónicos desde la línea de comando ha sido tradicionalmente doloroso:
- Configuración compleja: La configuración de sendmail, postfix o msmtp requiere cambios a nivel del sistema
- Problemas de entregabilidad: Los servidores de correo autohospedados suelen terminar en carpetas de spam
- Fragmentación de la plataforma: Diferentes herramientas para diferentes sistemas operativos
- Infierno de dependencia: Muchas soluciones requieren la instalación de bibliotecas adicionales
Necesitaba una forma sencilla de enviar correos electrónicos desde scripts de automatización, agentes de IA y canalizaciones de CI/CD sin tener que luchar con la configuración del servidor de correo. Los servidores SMTP de Gmail tienen una excelente capacidad de entrega y las contraseñas de aplicaciones brindan autenticación segura sin exponer la contraseña de su cuenta principal.
La solución
gmail-cli es un único archivo Python sin dependencias externas que funciona en cualquier sistema con Python 3. Utiliza los servidores SMTP de Gmail para una entrega confiable y almacena las credenciales de forma segura en su directorio personal.
Instalación unifilar
macOS/Linux
curl -sSL https://colinknapp.com/tools/gmail-cli/install.sh | bash
WindowsPowerShell
iwr -useb https://colinknapp.com/tools/gmail-cli/install.ps1 | iex
El instalador descarga el script a ~/.local/bin (Unix) o %LOCALAPPDATA%\gmail-cli (Windows) y lo agrega a su RUTA.
Configuración: Contraseña de la aplicación Gmail
Gmail requiere una contraseña de aplicación para el acceso SMTP (su contraseña habitual no funcionará con 2FA habilitado). Aquí se explica cómo configurar uno:
- Ir a myaccount.google.com/apppasswords
- Habilite la verificación en dos pasos si aún no lo ha hecho
- Genere una contraseña de aplicación para "Correo"
- correr
gmail-cli configuree ingrese su dirección de Gmail y la contraseña de la aplicación
gmail-cli configure
Gmail CLI Configuration
----------------------------------------
You'll need a Gmail App Password:
1. Go to https://myaccount.google.com/apppasswords
2. Enable 2-Step Verification if needed
3. Generate an App Password for 'Mail'
Gmail address: yourname@gmail.com
App Password (will be stored locally): xxxx xxxx xxxx xxxx
Configuration saved to /home/user/.config/gmail-cli/config.json
Ejemplos de uso
Correo electrónico sencillo
gmail-cli send recipient@example.com -s "Hello" -b "Hi there!"
Correo electrónico con archivos adjuntos
gmail-cli send recipient@example.com \
-s "Weekly Report" \
-b "Please find the report attached." \
-a report.pdf \
-a data.csv
Contenido de tubería desde stdin
cat logfile.txt | gmail-cli send admin@example.com -s "Server Logs"
Conexión de prueba
gmail-cli test
Testing connection for yourname@gmail.com...
Success! Connection and authentication working.
Caso de uso del mundo real: correo electrónico de agente de IA
Creé esta herramienta específicamente para usar con agentes de codificación de IA como Cursor. Cuando necesito enviar un correo electrónico con archivos adjuntos en PDF, el agente de IA puede redactarlo y enviarlo directamente:
gmail-cli send recipient@example.com \
-s "Documents Attached" \
-b "Hi,
Please find the requested documents attached.
Best regards,
Your Name" \
-a document1.pdf \
-a document2.pdf
Esto permite la automatización de un extremo a otro: la IA puede generar documentos, crear archivos PDF y enviarlos por correo electrónico sin intervención humana.
Implementación técnica
Arquitectura
- Fila única: No hay dependencias más allá de la biblioteca estándar de Python 3
- SMTP sobre TLS: Conexión segura a smtp.gmail.com:587
- Configuración local: Credenciales almacenadas en
~/.config/gmail-cli/config.jsoncon 600 permisos - Soporte MIME: Mensajes de varias partes adecuados para archivos adjuntos
Consideraciones de seguridad
- Utiliza contraseñas de aplicaciones de Gmail (no su contraseña principal)
- El archivo de configuración tiene permisos restringidos (Unix: 600)
- Cifrado TLS para todas las comunicaciones SMTP
- Las contraseñas de las aplicaciones se pueden revocar individualmente sin afectar su cuenta principal
Soporte multiplataforma
La herramienta maneja las diferencias de plataforma automáticamente:
- MacOS/Linux: Configurar en
~/.config/gmail-cli/, instalado en~/.local/bin/ - Ventanas: Configurar en
%APPDATA%\gmail-cli\, instalado en%LOCALAPPDATA%\gmail-cli\con un envoltorio .bat
Referencia de comando
| Comando | Descripción |
|---|---|
gmail-cli configure |
Configurar credenciales de Gmail (interactivo) |
gmail-cli configure --email x --password y |
Establecer credenciales de forma no interactiva |
gmail-cli send TO -s SUBJ -b BODY |
enviar un correo electrónico |
gmail-cli send TO -s SUBJ -a FILE |
Enviar con archivos adjuntos |
gmail-cli test |
Probar la conexión SMTP |
gmail-cli config |
Mostrar configuración actual |
Integración con la automatización
gmail-cli funciona perfectamente con:
- Guiones de shell: Enviar notificaciones desde trabajos cron o crear scripts
- Tuberías de CI/CD: Informes de implementación por correo electrónico o resultados de pruebas
- Agentes de IA: Permita que los asistentes con tecnología LLM envíen correos electrónicos en su nombre
- Monitoreo: Alerta sobre eventos del sistema o violaciones de umbrales
Ejemplo: Informe de copia de seguridad diario
#!/bin/bash
# backup-report.sh - Run daily via cron
BACKUP_LOG="/var/log/backup.log"
RECIPIENT="admin@example.com"
if [ -f "$BACKUP_LOG" ]; then
cat "$BACKUP_LOG" | gmail-cli send "$RECIPIENT" \
-s "Daily Backup Report - $(date +%Y-%m-%d)"
fi
¿Por qué no utilizar las herramientas existentes?
| Alternativa | Problema |
|---|---|
| enviar correo/postfix | Requiere raíz, configuración compleja y problemas de entrega |
| msmtp | Dependencia externa, sintaxis del archivo de configuración |
| correox/correo | Específico de la plataforma, requiere MTA local |
| Python smtplib directamente | Código repetitivo, sin interfaz CLI |
gmail-cli proporciona la simplicidad de una herramienta CLI con la confiabilidad de la infraestructura de Gmail, envuelto en un paquete sin dependencia que funciona en todos los lugares donde se ejecuta Python.
Observaciones
- Las instalaciones de una sola línea funcionan: el
curl | bashEl patrón, aunque controvertido, reduce drásticamente la fricción para las herramientas de desarrollo. - SMTP de Gmail es confiable: Los servidores de Google tienen una excelente capacidad de entrega y tiempo de actividad.
- Las contraseñas de aplicaciones están subestimadas: Proporcionan acceso con alcance sin exponer sus credenciales principales.
- Asuntos multiplataforma: Una herramienta que funciona de manera idéntica en macOS, Linux y Windows ahorra documentación y esfuerzo de soporte
- Los agentes de IA necesitan correo electrónico: A medida que crece la automatización impulsada por LLM, el correo electrónico programático simple se vuelve cada vez más valioso
Get Started
Instala gmail-cli y comienza a enviar correos electrónicos desde tu terminal:
# Install (macOS/Linux)
curl -sSL https://colinknapp.com/tools/gmail-cli/install.sh | bash
# Configure
gmail-cli configure
# Send your first email
gmail-cli send yourself@gmail.com -s "Test" -b "It works!"