문서로 건너뛰기
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>나중에 보내기: 2026-10-01T09:00:00Z 같은 ISO 시각, 또는 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

이메일 ID와 상태를 출력합니다. sent, partial, failed는 요청 안에서 보내기를 시도했다는 뜻이고, queued와 scheduled는 보류 중이라는 뜻입니다. failed 보내기는 종료 코드 1로 끝나며, --json은 이메일 전체를 출력합니다.

모든 보내기에는 사용자가 준 것이든 CLI가 만든 것이든 멱등 키가 붙으므로, 연결이 끊긴 뒤 재시도해도 메시지가 두 번 가지 않습니다. 파이프라인이 같은 단계를 다시 실행할 수 있다면 직접 키를 주세요.

첨부 파일

--attach는 파일을 최대 20개까지 받습니다. 합계가 5 MB 이하이면 메시지 안에 담아 보냅니다. 그보다 크면 각 파일을 먼저 파일에 업로드하고 메시지가 이를 참조하므로, 큰 파일에도 추가 단계가 필요 없습니다. 콘텐츠 타입은 파일 확장자로 정해집니다.

받은편지함

터미널
openemail inboxopenemail inbox --unread --limit 50openemail inbox archive --sort oldestopenemail inbox --all --json | jq -r ".items[].id"

스레드를 최신순으로 한 페이지 나열하며, 각 스레드가 마지막으로 움직인 시점, 마지막 작성자, 제목, 라벨, 스레드 ID를 보여 줍니다. 점은 읽지 않은 메일을 표시합니다. 폴더는 받은편지함이며 다른 것을 지정할 수도 있습니다: sent, archive, starred, snoozed, spam, trash, draft, 또는 USER_RECEIPTS 같은 라벨 ID.

  • -u, --unread는 읽지 않은 메일이 있는 스레드만, -l, --label은 라벨이 붙은 스레드만 남기고, -q, --query는 검색으로 목록을 좁힙니다.
  • -n, --limit는 페이지 크기를 1에서 100 사이로 정합니다(지정하지 않으면 25). 더 남아 있으면 다음 커서가 --cursor용으로 stderr에 출력되고, --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

스레드의 모든 메시지를 오래된 순으로 출력합니다. 보낸 사람과 받는 사람, 시각, 제목, 크기와 ID가 있는 첨부 파일, 본문입니다. 일반 텍스트 부분은 그대로 보여 주고, 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가 ID를 보여 줍니다

각 명령은 스레드 ID를 여러 개 받아 하나하나 결과를 보고합니다. 첫 실패가 종료 코드를 정하며, --json은 { results, succeeded, failed }를 출력합니다. 검색 결과의 ID를 바로 이어 붙일 수 있습니다:

터미널
openemail inbox --query "newer_than:30d from:alerts" --json | jq -r ".items[].id" | xargs openemail archive

일회용 받은편지함

openemail temp는 계정도 로그인도 필요 없는 짧은 수명의 주소를 만들며, 가입 테스트와 일회용 코드에 알맞습니다. 각 받은편지함 토큰은 ~/.openemail/temp-mail.json에 보관되므로, 이후 명령은 ID나 주소로 받은편지함을 찾고, 하나뿐이면 알아서 찾습니다.

터미널
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에 주소만 출력합니다. --ttl로 달리 정하지 않으면 60분, 최대 24시간 유지되며, --name과 --domain으로 주소를 고릅니다.
  • temp watch는 도착한 것을 출력한 뒤, 멈추거나 받은편지함이 만료될 때까지 3초마다 확인합니다. --first는 첫 메시지에서 멈추고, --json은 메시지마다 JSON 한 줄을 출력합니다.
  • temp read는 메시지를 짧은 미리 보기와 함께 나열하거나, 메시지 하나를 전부 출력합니다.
  • temp delete는 받은편지함과 메일을 바로 삭제합니다. 주소는 원래 기간이 끝났을 시점부터 7일 동안 예약된 상태로 남습니다.
  • --inbox-token을 쓰면 이 CLI가 만들지 않은 받은편지함에 temp read, watch, delete로 접근할 수 있습니다.
  • 일회용 받은편지함 메일의 발신자는 절대 검증되지 않습니다.

받은편지함을,
내 방식대로.

기업, AI, 에이전트, 개인 메일을 위한 이메일 인프라. 규모와 프라이버시, 통제권을 위해 만들었습니다. 이메일이 처음부터 갖췄어야 할 모든 것.

OpenEmail

기업, AI, 에이전트, 개인 메일을 위한 이메일 인프라. 규모와 프라이버시, 통제권을 위해 만들었습니다. 이메일이 처음부터 갖췄어야 할 모든 것.

© 2026 OpenEmail. 모든 권리 보유.