Herramienta CLI
Verificación de correos desde la línea de comandos para DevOps y automatización. Procesa listas por tuberías, exporta JSON/CSV/JSONL. Sin dependencias: solo Python.
Instalación
pip install email-validator-cli
O descarga el script independiente:
Requisitos: Python 3.8+. Sin dependencias externas: usa únicamente la biblioteca estándar
(urllib, json, csv, argparse).
Works on Linux, macOS, Windows, and in Docker.
Configuración
Obtén tu clave de API desde el Panel de control, y luego:
email-validator setup
O configúralo de forma no interactiva:
# Variable de entorno
export EV_API_KEY=ev_your_key_here
# O archivo de configuración (~/.email-validator.conf)
api_key=ev_your_key_here
# O parámetro de la CLI
email-validator verify user@domain.com --api-key ev_your_key_here
Inicio rápido
Verifica un solo correo
email-validator verify user@domain.com
# ✓ user@domain.com válido conf:high mx:gmail-smtp-in.l.google.com 234ms
Canalizar desde stdin
cat emails.txt | email-validator verify --stdin
# ✓ user1@domain.com válido 234ms
# ✗ user2@domain.com no válido El correo no existe
# ⚠ user3@yahoo.com riesgoso Verifly: 87% de confianza
Exportar CSV
email-validator verify --file subscribers.txt --format csv --output results.csv
JSON delimitado por líneas (compatible con jq)
cat leads.txt | email-validator verify --stdin --format jsonl | jq '.status'
Cuenta y créditos
email-validator account
# Cuenta: user@example.com
# Plan: Basic
# Créditos: 4500 restantes (de 5000)
email-validator credits
# ✓ 4500 créditos
Opciones del comando verify
| Opción | Descripción |
|---|---|
--stdin | Leer correos desde stdin (canalización) |
--file, -f PATH | Leer correos desde un archivo (omite las líneas que empiezan por #) |
--format, -F fmt | Salida: table, json, csv, jsonl |
--output, -o PATH | Escribir la salida en un archivo |
--quiet, -q | Salida mínima (correo<TAB>estado) |
--api-key, -k KEY | Sustituir la clave de API para este comando |
Detección automática: Cuando la salida se canaliza (p. ej. | jq), the format
automatically switches to jsonl. For interactive terminal use, it defaults to table.
Valores de estado del correo
| Estado | Significado | Coste en créditos |
|---|---|---|
valid | Buzón confirmado como existente | 1 crédito |
invalid | El buzón no existe | 1 crédito |
risky | Resultado de baja confianza (Yahoo, AOL, etc.) | Gratis |
catch_all | El dominio acepta todo el correo (no se puede confirmar) | Gratis |
disposable | Proveedor de correo temporal/desechable | 1 crédito |
unknown | No se pudo determinar (error de red/DNS) | Gratis |
Ejemplos de CI/CD y automatización
GitHub Actions
# .github/workflows/validate.yml
- name: Validate email list
run: |
pip install email-validator-cli
email-validator verify --file subscribers.txt --format csv --output validated.csv
env:
EV_API_KEY: ${{ secrets.EV_API_KEY }}
Bash: filtrar solo correos válidos
email-validator verify --stdin --format jsonl < leads.txt \
| jq -r 'select(.status=="valid") | .email' \
> clean_leads.txt
Docker
FROM python:3.12-slim
RUN pip install email-validator-cli
ENTRYPOINT ["email-validator"]
Cron: validación nocturna
# crontab
0 2 * * * /usr/local/bin/email-validator verify --file /data/list.csv \
--output /data/validated.jsonl --format jsonl
Requisitos
- Python 3.8 o posterior
- Una cuenta activa de Email Validator con clave API
- Los correos verificados consumen créditos; los estados gratis/arriesgado/desconocido son gratuitos
- Límite de velocidad: 60 solicitudes por minuto por usuario