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
--stdinLeer correos desde stdin (canalización)
--file, -f PATHLeer correos desde un archivo (omite las líneas que empiezan por #)
--format, -F fmtSalida: table, json, csv, jsonl
--output, -o PATHEscribir la salida en un archivo
--quiet, -qSalida mínima (correo<TAB>estado)
--api-key, -k KEYSustituir 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
validBuzón confirmado como existente1 crédito
invalidEl buzón no existe1 crédito
riskyResultado de baja confianza (Yahoo, AOL, etc.)Gratis
catch_allEl dominio acepta todo el correo (no se puede confirmar)Gratis
disposableProveedor de correo temporal/desechable1 crédito
unknownNo 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