Correo
Enviar con cualquier cuerpo y adjuntos, leer y buscar en el buzón, responder, archivar hilos y usar bandejas desechables.
Enviar
openemail send --to [email protected] --subject "Lunch?" --text "Thursday at noon works for me."El cuerpo sale de la primera de estas fuentes que exista:
--texty--html, los dos juntos si quieres ambas partes.--body-file <path>. Un archivo.htmlo.htmse envía como HTML y cualquier otro como texto, y-lee stdin.- Lo que llegue por stdin. Una entrada que empieza con una etiqueta HTML se envía como HTML.
- Tu editor (
$VISUAL, y si no$EDITOR), cuando lo ejecutas en un terminal.
Sin --from, la CLI envía desde la única dirección desde la que puedes enviar, o te deja elegir una en un terminal. Sin supervisión y con más de una, se detiene y pide --from. En un terminal ves un resumen y confirmas antes de que salga nada, algo que --yes se salta.
| Opción | Qué hace |
|---|---|
| --to, --cc, --bcc | Destinatarios, separados por comas o repetidos. Ada Lovelace <[email protected]> también funciona |
| --from, --reply-to | La dirección de envío, y la cabecera Reply-To |
| -s, --subject | La línea de asunto |
| -a, --attach <path> | Adjuntar un archivo. Repítelo para más |
| --at <when> | Enviar más tarde: una hora ISO como 2026-10-01T09:00:00Z, o un retraso como 10m, 2h, 1d o PT1H |
| --undo <seconds> | Retener un envío inmediato hasta 900 segundos, para que aún pueda cancelarse |
| --translate <language> | Traducir el correo a este idioma antes de que salga |
| --template <id>, --props <json> | Enviar una plantilla guardada con sus props en lugar de un cuerpo |
| --draft <id> | Enviar un borrador guardado exactamente como se escribió |
| --thread <id> | Archivar el correo enviado en este hilo |
| --tag <key=value> | Etiquetar el correo. Repítelo para más |
| --idempotency-key <key> | Volver a ejecutar el comando con la misma clave nunca envía dos veces |
cat report.md | openemail send --to [email protected] --subject "Weekly report" --attach chart.pngopenemail send --to [email protected] --subject "Invoice" --body-file invoice.html --translate de --at 2hopenemail send --to [email protected] --template welcome --props '{"name":"Ada"}' --tag campaign=onboardingMuestra el id del correo y su estado. sent, partial y failed significan que el envío se intentó dentro de la petición, y queued y scheduled que está retenido. Un envío failed sale con el código 1, y --json muestra el correo completo.
Cada envío lleva una clave de idempotencia, la tuya o una que genera la CLI, así que un reintento tras una conexión caída nunca envía el mensaje dos veces. Pasa la tuya cuando un pipeline pueda repetir el mismo paso.
Adjuntos
--attach admite hasta 20 archivos. Mientras sumen 5 MB o menos en total, viajan dentro del mensaje. Cuando suman más, cada uno se sube primero a Archivos y el mensaje hace referencia a él, así que un archivo grande no necesita ningún paso extra. El tipo de contenido sale de la extensión del archivo.
Bandeja de entrada
openemail inboxopenemail inbox --unread --limit 50openemail inbox archive --sort oldestopenemail inbox --all --json | jq -r ".items[].id"Lista una página de hilos, del más reciente al más antiguo, con cuándo se movió cada uno por última vez, quién escribió el último, el asunto, las etiquetas y el id del hilo. Un punto marca el correo sin leer. La carpeta es la bandeja de entrada salvo que nombres otra: sent, archive, starred, snoozed, spam, trash, draft, o un id de etiqueta como USER_RECEIPTS.
-u,--unreadconserva los hilos con correo sin leer,-l,--labelconserva los hilos que llevan una etiqueta, y-q,--queryacota la lista con una búsqueda.-n,--limitfija el tamaño de la página, de 1 a 100 (25 si no dices otra cosa). Si quedan más, el siguiente cursor se muestra en stderr para--cursor, y--alllee cada página.--from-contactsconserva los hilos cuyo mensaje más reciente vino de un contacto guardado, y--sortlos ordena pornewest,oldest,senderosubject.--jsonmuestra{ items, hasMore, nextCursor }, con cada hilo completo.
Búsqueda
openemail search invoice from:adaopenemail search "quarterly report" has:pdf newer_than:30dopenemail search in:anywhere from:me to:ada --limit 50openemail search -- invoice -from:adaLa búsqueda usa la sintaxis del cuadro de búsqueda de la app: palabras sueltas, frases entre comillas y operadores como from:, to:, subject:, has:pdf, is:unread, after:2026/01/31 y newer_than:7d. Busca en la bandeja de entrada, o en la carpeta de --folder, salvo que la consulta nombre una con in: o is:, e in:anywhere busca en todas las carpetas. Admite las opciones de inbox y muestra sus resultados igual.
Una palabra que empieza por guion se excluye de los resultados, y la CLI la leería como una opción, así que pon -- delante de una consulta que la tenga.
Leer un hilo
openemail read CAHk7pQ2x9LmZ4openemail read CAHk7pQ2x9LmZ4 --message -1openemail read CAHk7pQ2x9LmZ4 --html --message 1 > first.htmlMuestra cada mensaje del hilo, del más antiguo al más reciente: quién lo envió y a quién, cuándo, el asunto, los adjuntos con su tamaño e id, y el cuerpo. Una parte de texto plano se muestra tal cual, y un mensaje solo HTML se convierte en texto legible que conserva sus listas, citas, títulos y enlaces. Leer marca el hilo como leído, salvo que pases --no-mark-read.
-m,--message <n>muestra un solo mensaje, contando desde 1, o desde el más reciente con un número negativo.--htmlmuestra el HTML sin procesar en su lugar.- Un mensaje cifrado no se descifra aquí, así que ábrelo en la app web.
Responder
openemail reply CAHk7pQ2x9LmZ4 --text "Thanks, that works for me."openemail reply CAHk7pQ2x9LmZ4 --all --attach notes.pdfecho "Confirmed." | openemail reply CAHk7pQ2x9LmZ4 --yesResponde en el mismo hilo a quien envió el último mensaje, o a su dirección Reply-To. Cuando el último mensaje es tuyo, la respuesta va a las personas a las que se envió. --all pone en copia a todos los demás de ese mensaje, dejando fuera tus propias direcciones. El asunto recibe Re: si aún no lo tiene, y la respuesta sale de la dirección a la que se entregó el hilo cuando puedes enviar desde ella.
Admite las opciones de cuerpo, adjuntos, programación, traducción, etiquetas e idempotencia de send, junto con --from y --subject, y --to, --cc y --bcc reemplazan a los destinatarios.
Archivar hilos
| Comando | Qué hace |
|---|---|
| archive <thread-id...> | Fuera de la bandeja de entrada, aún se puede buscar |
| unarchive <thread-id...> | De vuelta a la bandeja de entrada |
| trash <thread-id...> | A la papelera. Pide confirmación, porque ninguna llamada saca un hilo de ella |
| star, unstar | Poner o quitar la estrella |
| mark read, mark unread | Marcar hilos como leídos o no leídos |
| snooze <thread-id...> --until <when> | Ocultar hilos hasta una hora, o durante un retraso como 3h o 1w. Vuelven en torno a una hora después de ella |
| unsnooze | Traer de vuelta ahora los hilos pospuestos |
| label add, remove --label <id> | Poner etiquetas a los hilos o quitarlas. openemail labels list muestra los ids |
Cada uno admite varios ids de hilo e informa de cada uno. El primer fallo fija el código de salida, y --json muestra { results, succeeded, failed }. Los ids de una búsqueda se encadenan directamente:
openemail inbox --query "newer_than:30d from:alerts" --json | jq -r ".items[].id" | xargs openemail archiveBandejas desechables
openemail temp crea direcciones de vida corta que no necesitan cuenta ni inicio de sesión, ideales para pruebas de registro y códigos de un solo uso. Cada token de bandeja se guarda en ~/.openemail/temp-mail.json, así que los comandos siguientes encuentran una bandeja por su id o dirección, o por sí solos cuando solo tienes una.
ADDRESS=$(openemail temp new --ttl 15)openemail temp watch --first --json | jq -r .snippetopenemail temp listopenemail temp readopenemail temp read tinb_4f2a tmail_91c3openemail temp delete --yestemp newmuestra solo la dirección en stdout. Vive 60 minutos salvo que--ttldiga otra cosa, hasta 24 horas, y--namey--domaineligen la dirección.temp watchmuestra lo que ha llegado y luego comprueba cada 3 segundos hasta que lo detengas o caduque la bandeja.--firstse detiene en el primer mensaje, y--jsonmuestra una línea JSON por mensaje.temp readlista los mensajes con una vista previa corta, o muestra un mensaje completo.temp deleteelimina la bandeja y su correo al momento. La dirección queda reservada 7 días después de cuando habría terminado su plazo.--inbox-tokenllega a una bandeja que esta CLI no creó, entemp read,watchydelete.- El remitente del correo de una bandeja desechable nunca está verificado.