Correio
Enviar com qualquer corpo e anexos, ler e pesquisar a caixa de correio, responder, arquivar conversas e usar caixas de entrada descartáveis.
Enviar
openemail send --to [email protected] --subject "Lunch?" --text "Thursday at noon works for me."O corpo vem da primeira destas fontes que existir:
--texte--html, os dois juntos se quiser ambas as partes.--body-file <path>. Um ficheiro.htmlou.htmé enviado como HTML e qualquer outro como texto, e-lê stdin.- O que chegar por stdin. Uma entrada que comece com uma etiqueta HTML é enviada como HTML.
- O seu editor (
$VISUAL, e depois$EDITOR), quando o executa num terminal.
Sem --from, a CLI envia a partir do único endereço a partir do qual pode enviar, ou deixa-o escolher um num terminal. Sem supervisão e com mais de um, para e pede --from. Num terminal vê um resumo e confirma antes de sair alguma coisa, o que --yes salta.
| Opção | O que faz |
|---|---|
| --to, --cc, --bcc | Destinatários, separados por vírgulas ou repetidos. Ada Lovelace <[email protected]> também funciona |
| --from, --reply-to | O endereço de envio, e o cabeçalho Reply-To |
| -s, --subject | A linha de assunto |
| -a, --attach <path> | Anexar um ficheiro. Repita para mais |
| --at <when> | Enviar mais tarde: uma hora ISO como 2026-10-01T09:00:00Z, ou um atraso como 10m, 2h, 1d ou PT1H |
| --undo <seconds> | Reter um envio imediato até 900 segundos, para que ainda possa ser cancelado |
| --translate <language> | Traduzir o email para esta língua antes de sair |
| --template <id>, --props <json> | Enviar um modelo guardado com os seus props em vez de um corpo |
| --draft <id> | Enviar um rascunho guardado exatamente como foi escrito |
| --thread <id> | Arquivar o email enviado nesta conversa |
| --tag <key=value> | Etiquetar o email. Repita para mais |
| --idempotency-key <key> | Executar o comando outra vez com a mesma chave nunca envia duas vezes |
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=onboardingMostra o id do email e o seu estado. sent, partial e failed significam que o envio foi tentado dentro do pedido, e queued e scheduled que está retido. Um envio failed sai com o código 1, e --json mostra o email completo.
Cada envio leva uma chave de idempotência, a sua ou uma que a CLI gera, por isso uma nova tentativa após uma ligação caída nunca envia a mensagem duas vezes. Passe a sua quando um pipeline puder repetir o mesmo passo.
Anexos
--attach aceita até 20 ficheiros. Enquanto somarem 5 MB ou menos no total, viajam dentro da mensagem. Quando somam mais, cada um é primeiro carregado para Ficheiros e a mensagem faz referência a ele, por isso um ficheiro grande não precisa de nenhum passo extra. O tipo de conteúdo vem da extensão do ficheiro.
Caixa de entrada
openemail inboxopenemail inbox --unread --limit 50openemail inbox archive --sort oldestopenemail inbox --all --json | jq -r ".items[].id"Lista uma página de conversas, da mais recente para a mais antiga, com quando cada uma se moveu pela última vez, quem escreveu por último, o assunto, as etiquetas e o id da conversa. Um ponto marca correio não lido. A pasta é a caixa de entrada, a menos que indique outra: sent, archive, starred, snoozed, spam, trash, draft, ou um id de etiqueta como USER_RECEIPTS.
-u,--unreadmantém as conversas com correio não lido,-l,--labelmantém as conversas que têm uma etiqueta, e-q,--queryrestringe a lista com uma pesquisa.-n,--limitdefine o tamanho da página, de 1 a 100 (25 se nada indicar). Quando restam mais, o cursor seguinte é mostrado em stderr para--cursor, e--alllê cada página.--from-contactsmantém as conversas cuja mensagem mais recente veio de um contacto guardado, e--sortordena-as pornewest,oldest,senderousubject.--jsonmostra{ items, hasMore, nextCursor }, com cada conversa completa.
Pesquisa
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:adaA pesquisa usa a sintaxe da caixa de pesquisa da aplicação: palavras simples, expressões entre aspas e operadores como from:, to:, subject:, has:pdf, is:unread, after:2026/01/31 e newer_than:7d. Pesquisa na caixa de entrada, ou na pasta de --folder, a menos que a pesquisa indique uma com in: ou is:, e in:anywhere pesquisa em todas as pastas. Aceita as opções de inbox e mostra os resultados da mesma forma.
Uma palavra que começa por hífen é excluída dos resultados, e a CLI lê-la-ia como uma opção, por isso coloque -- antes de uma pesquisa que a tenha.
Ler uma conversa
openemail read CAHk7pQ2x9LmZ4openemail read CAHk7pQ2x9LmZ4 --message -1openemail read CAHk7pQ2x9LmZ4 --html --message 1 > first.htmlMostra cada mensagem da conversa, da mais antiga para a mais recente: quem a enviou e a quem, quando, o assunto, os anexos com tamanho e id, e o corpo. Uma parte em texto simples é mostrada tal como está, e uma mensagem só em HTML é convertida em texto legível que mantém as listas, as citações, os títulos e as ligações. Ler marca a conversa como lida, a menos que passe --no-mark-read.
-m,--message <n>mostra uma só mensagem, contando a partir de 1, ou a partir da mais recente com um número negativo.--htmlmostra o HTML em bruto em vez disso.- Uma mensagem cifrada não é decifrada aqui, por isso abra-a na aplicação web.
Responder
openemail reply CAHk7pQ2x9LmZ4 --text "Thanks, that works for me."openemail reply CAHk7pQ2x9LmZ4 --all --attach notes.pdfecho "Confirmed." | openemail reply CAHk7pQ2x9LmZ4 --yesResponde na mesma conversa a quem enviou a última mensagem, ou ao seu endereço Reply-To. Quando a última mensagem é sua, a resposta vai para as pessoas a quem foi enviada. --all põe em cópia todas as outras pessoas dessa mensagem, deixando de fora os seus próprios endereços. O assunto recebe Re: se ainda não o tiver, e a resposta sai do endereço a que a conversa foi entregue quando pode enviar a partir dele.
Aceita as opções de corpo, anexos, agendamento, tradução, tags e idempotência de send, com --from e --subject, e --to, --cc e --bcc substituem os destinatários.
Arquivar conversas
| Comando | O que faz |
|---|---|
| archive <thread-id...> | Fora da caixa de entrada, ainda pesquisável |
| unarchive <thread-id...> | De volta à caixa de entrada |
| trash <thread-id...> | Para o Lixo. Pede confirmação, porque nenhuma chamada tira uma conversa de lá |
| star, unstar | Pôr ou tirar a estrela |
| mark read, mark unread | Marcar conversas como lidas ou não lidas |
| snooze <thread-id...> --until <when> | Ocultar conversas até uma hora, ou durante um atraso como 3h ou 1w. Voltam cerca de uma hora depois dessa hora |
| unsnooze | Trazer de volta agora as conversas adiadas |
| label add, remove --label <id> | Pôr etiquetas em conversas ou retirá-las. openemail labels list mostra os ids |
Cada um aceita vários ids de conversa e informa sobre cada um. A primeira falha define o código de saída, e --json mostra { results, succeeded, failed }. Os ids de uma pesquisa encadeiam-se diretamente:
openemail inbox --query "newer_than:30d from:alerts" --json | jq -r ".items[].id" | xargs openemail archiveCaixas de entrada descartáveis
openemail temp cria endereços de curta duração que não precisam de conta nem de início de sessão, ideais para testes de registo e códigos de uso único. Cada token de caixa fica guardado em ~/.openemail/temp-mail.json, por isso os comandos seguintes encontram uma caixa pelo id ou pelo endereço, ou sozinhos quando só tem uma.
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 newmostra só o endereço em stdout. Dura 60 minutos, a menos que--ttldiga outra coisa, até 24 horas, e--namee--domainescolhem o endereço.temp watchmostra o que chegou e depois verifica a cada 3 segundos até o parar ou a caixa expirar.--firstpara na primeira mensagem, e--jsonmostra uma linha JSON por mensagem.temp readlista as mensagens com uma pré-visualização curta, ou mostra uma mensagem completa.temp deleteelimina a caixa e o seu correio de imediato. O endereço fica reservado durante 7 dias depois do fim previsto do seu prazo.--inbox-tokenchega a uma caixa de entrada que esta CLI não criou, emtemp read,watchedelete.- O remetente do correio numa caixa de entrada descartável nunca é verificado.