Перейти к документации
CLI

Почта

Отправлять с любым телом и вложениями, читать ящик и искать в нём, отвечать, раскладывать цепочки и пользоваться одноразовыми ящиками.

Отправка

Терминал
openemail send --to [email protected] --subject "Lunch?" --text "Thursday at noon works for me."

Тело берётся из первого из этих источников, который есть:

  1. --text и --html, вместе, если нужны обе части.
  2. --body-file <path>. Файл .html или .htm отправляется как HTML, всё остальное как текст, а - читает stdin.
  3. То, что пришло через stdin. Ввод, начинающийся с HTML-тега, отправляется как HTML.
  4. Ваш редактор ($VISUAL, затем $EDITOR), когда вы запускаете команду в терминале.

Без --from CLI отправляет с единственного адреса, с которого вы можете отправлять, или даёт выбрать адрес в терминале. Без присмотра и при нескольких адресах она останавливается и требует --from. В терминале вы видите сводку и подтверждаете до отправки, что пропускает --yes.

ФлагЧто делает
--to, --cc, --bccПолучатели, через запятую или повторением. Ada Lovelace <[email protected]> тоже работает
--from, --reply-toАдрес отправки и заголовок Reply-To
-s, --subjectСтрока темы
-a, --attach <path>Прикрепить файл. Повторите для других
--at <when>Отправить позже: время ISO, например 2026-10-01T09:00:00Z, или задержка, например 10m, 2h, 1d или PT1H
--undo <seconds>Задержать немедленную отправку до 900 секунд, чтобы её ещё можно было отменить
--translate <language>Перевести письмо на этот язык перед отправкой
--template <id>, --props <json>Отправить сохранённый шаблон с его props вместо тела
--draft <id>Отправить сохранённый черновик ровно так, как он написан
--thread <id>Поместить отправленное письмо в эту цепочку
--tag <key=value>Добавить тег к письму. Повторите для других
--idempotency-key <key>Повторный запуск команды с тем же ключом никогда не отправляет дважды
Другие отправки
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=onboarding

Команда выводит идентификатор письма и его статус. sent, partial и failed значат, что отправка была попытана в рамках запроса, а queued и scheduled что письмо удержано. Отправка со статусом failed завершается с кодом 1, а --json выводит письмо целиком.

Каждая отправка несёт ключ идемпотентности, ваш или созданный CLI, поэтому повтор после оборванного соединения никогда не отправит письмо дважды. Передайте свой, если конвейер может повторить тот же шаг.

Вложения

--attach принимает до 20 файлов. Пока в сумме они не больше 5 МБ, они едут внутри письма. Если больше, каждый сначала загружается в «Файлы», а письмо ссылается на него, так что большому файлу не нужен лишний шаг. Тип содержимого берётся из расширения файла.

Входящие

Терминал
openemail inboxopenemail inbox --unread --limit 50openemail inbox archive --sort oldestopenemail inbox --all --json | jq -r ".items[].id"

Показывает одну страницу цепочек, новые сверху: когда каждая двигалась в последний раз, кто писал последним, тему, метки и идентификатор цепочки. Точка отмечает непрочитанную почту. Папка это входящие, если вы не укажете другую: sent, archive, starred, snoozed, spam, trash, draft или идентификатор метки, например USER_RECEIPTS.

  • -u, --unread оставляет цепочки с непрочитанной почтой, -l, --label оставляет цепочки с меткой, а -q, --query сужает список поиском.
  • -n, --limit задаёт размер страницы, от 1 до 100 (25, если не указано). Когда осталось ещё, следующий курсор выводится в stderr для --cursor, а --all читает все страницы.
  • --from-contacts оставляет цепочки, последнее письмо которых пришло от сохранённого контакта, а --sort упорядочивает их по newest, oldest, sender или subject.
  • --json выводит { items, hasMore, nextCursor } с каждой цепочкой целиком.

Чтение цепочки

Терминал
openemail read CAHk7pQ2x9LmZ4openemail read CAHk7pQ2x9LmZ4 --message -1openemail read CAHk7pQ2x9LmZ4 --html --message 1 > first.html

Выводит каждое письмо цепочки, старые сверху: кто отправил и кому, когда, тему, вложения с размером и идентификатором и тело. Текстовая часть показывается как есть, а письмо только в HTML превращается в читаемый текст, который сохраняет списки, цитаты, заголовки и ссылки. Чтение отмечает цепочку прочитанной, если вы не передадите --no-mark-read.

  • -m, --message <n> показывает одно письмо, считая с 1, или с самого нового при отрицательном числе.
  • --html выводит вместо этого исходный HTML.
  • Зашифрованное письмо здесь не расшифровывается, откройте его в веб-приложении.

Ответ

Терминал
openemail reply CAHk7pQ2x9LmZ4 --text "Thanks, that works for me."openemail reply CAHk7pQ2x9LmZ4 --all --attach notes.pdfecho "Confirmed." | openemail reply CAHk7pQ2x9LmZ4 --yes

Отвечает в той же цепочке тому, кто отправил последнее письмо, или на его адрес Reply-To. Если последнее письмо ваше, ответ уходит тем, кому оно было отправлено. --all ставит в копию всех остальных из этого письма, кроме ваших адресов. Тема получает Re:, если его ещё нет, а ответ уходит с адреса, на который была доставлена цепочка, если вы можете с него отправлять.

Команда принимает флаги тела, вложений, планирования, перевода, тегов и идемпотентности из send, а также --from и --subject, а --to, --cc и --bcc заменяют получателей.

Раскладывание цепочек

КомандаЧто делает
archive <thread-id...>Из входящих, но по-прежнему находится поиском
unarchive <thread-id...>Обратно во входящие
trash <thread-id...>В корзину. Просит подтверждения, потому что ни один вызов не достаёт цепочку оттуда
star, unstarПоставить или снять звёздочку
mark read, mark unreadОтметить цепочки прочитанными или непрочитанными
snooze <thread-id...> --until <when>Скрыть цепочки до указанного времени или на срок, например 3h или 1w. Они возвращаются примерно в течение часа после него
unsnoozeВернуть отложенные цепочки сейчас
label add, remove --label <id>Ставить метки на цепочки или снимать их. openemail labels list показывает идентификаторы

Каждая принимает несколько идентификаторов цепочек и отчитывается по каждому. Первая ошибка задаёт код выхода, а --json выводит { results, succeeded, failed }. Идентификаторы из поиска передаются напрямую:

Терминал
openemail inbox --query "newer_than:30d from:alerts" --json | jq -r ".items[].id" | xargs openemail archive

Одноразовые ящики

openemail temp создаёт короткоживущие адреса, которым не нужны ни аккаунт, ни вход, что подходит для тестов регистрации и одноразовых кодов. Токен каждого ящика хранится в ~/.openemail/temp-mail.json, поэтому следующие команды находят ящик по идентификатору или адресу, или сами, если ящик у вас один.

Терминал
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 --yes
  • temp new выводит в stdout только адрес. Он живёт 60 минут, если --ttl не говорит иначе, максимум 24 часа, а --name и --domain выбирают адрес.
  • temp watch выводит то, что пришло, а затем проверяет каждые 3 секунды, пока вы его не остановите или ящик не истечёт. --first останавливается на первом письме, а --json выводит по одной строке JSON на письмо.
  • temp read перечисляет письма с коротким превью или выводит одно письмо целиком.
  • temp delete сразу удаляет ящик и его почту. Адрес остаётся зарезервированным на 7 дней после того, как закончилась бы его аренда.
  • --inbox-token открывает доступ к ящику, который эта CLI не создавала, в temp read, watch и delete.
  • Отправитель почты в одноразовом ящике никогда не проверяется.

Ваши входящие,
на ваших условиях.

Почтовая инфраструктура для бизнеса, ИИ, агентов и личной почты. Создана для масштаба, приватности и контроля. Всё, что должно было быть в почте с первого дня.

OpenEmail

Почтовая инфраструктура для бизнеса, ИИ, агентов и личной почты. Создана для масштаба, приватности и контроля. Всё, что должно было быть в почте с первого дня.

© 2026 OpenEmail. Все права защищены.