앱이 처리하는 메일

메일은 제품이 받고
답장은 코드가 씁니다

티켓, 항목, 고객마다 자기 주소를 가질 수 있습니다. 그 주소로 온 메일은 서명된 이벤트로 엔드포인트에 도착하고, 코드가 그 주소로 답합니다.

내 앱
티켓 8123ticket-8123@in.yourapp.com
티켓 8124ticket-8124@in.yourapp.com
티켓 8125ticket-8125@in.yourapp.com
받는 사람ticket-8123@in.yourapp.com
소포가 아직 안 왔어요.
보낸 사람ticket-8123@in.yourapp.com같은 주소
배송 중입니다. 운송장은 아래에 있어요.

아무도 이 주소들을 만들지 않았습니다. 답장은 메일이 도착한 주소에서 나갑니다.

출발점

지금은 이런 모습입니다.

답장이 제품 밖으로 떨어집니다

고객이 알림 메일에 답하면, 그 답장은 해당 항목이 아니라 공용 메일함에 남습니다.

주소를 매번 사람이 먼저 만듭니다

새 티켓에 메일함이 생기기 전에는 메일을 보낼 수 없어서, 주소를 손으로 만들어 둡니다.

서버가 새 메일을 계속 확인합니다

메일이 도착했다고 코드에 알려 주는 것이 없어서, 작업이 타이머에 맞춰 메일함을 확인합니다.

작동 방식

네 단계면 돌아갑니다.

  1. 01

    도메인을 OpenEmail로 연결

    도메인을 추가하고 레코드를 게시하면, 아무도 만들지 않은 주소까지 그 도메인의 모든 주소가 메일을 받습니다.

  2. 02

    타입이 있는 클라이언트 설치

    앱에 패키지를 추가하고, 나중에 범위를 정하거나 취소할 수 있는 워크스페이스 키를 설정하세요.

  3. 03

    엔드포인트 등록

    원하는 이벤트를 고르고, 서명 비밀 키를 복사한 뒤, 전달마다 5초 안에 응답하세요.

  4. 04

    코드에서 답장

    id로 대화와 파일을 가져온 다음, 메일이 배달된 그 주소로 보내세요.

바탕이 되는 기능

일을 해내는 구성 요소.

문서화된 HTTP API, 타입이 있는 클라이언트, 엔드포인트로 가는 웹훅, 여기로 연결한 모든 도메인의 캐치올 주소, 그리고 자체 브랜딩과 파일, 추적 링크 위에서 돌아갑니다.

REST API

발급하고, 범위를 정하고, 폐기할 수 있는 키를 갖춘 문서화된 HTTP API.

/threads?query=invoice
{ "threads": 12 }
사람이 쥐고 있든 프로그램이 쥐고 있든 같은 사서함.
타입이 있는 SDK

TypeScript 클라이언트를 먼저, 나머지는 그다음.

/threads?query=invoice
{ "threads": 12 }
사람이 쥐고 있든 프로그램이 쥐고 있든 같은 사서함.
웹훅

폴링하게 두지 않고, 메일이 도착하면 엔드포인트에 알립니다.

/threads?query=invoice
{ "threads": 12 }
사람이 쥐고 있든 프로그램이 쥐고 있든 같은 사서함.
캐치올 주소

도메인의 모든 주소가, 한 번도 만든 적 없는 주소까지 메일을 받습니다. 스위치 하나로 닫힙니다.

hello@yourdomain.com전달됨
billing@yourdomain.com전달됨
careers@yourdomain.com전달됨
anything-at-all@yourdomain.com전달됨
oct-2026-signup@yourdomain.com전달됨
여러 도메인

여러 도메인을 하나의 받은편지함으로, 서브도메인까지.

acme.comacme.devteam.acme.comhey.acme.io
워크스페이스 브랜딩

사이드바에 저희 것 대신 직접 만든 마크와 로고를 넣으세요.

acme.comacme.devstudio.acme.com
hello@acme.com전달됨
billing@acme.com전달됨
oct-2026-signup@acme.com전달됨
anything-at-all@acme.com전달됨
내 도메인으로 제공되는 파일

보낸 파일의 다운로드 링크를 OpenEmail 주소 대신 files.yourdomain.com처럼 직접 고른 서브도메인으로.

내 도메인으로 하는 추적

추적 링크와 열람 픽셀을 OpenEmail 주소 대신 links.yourdomain.com처럼 직접 고른 서브도메인으로.

실제 활용

구성 요소별로 하나씩.

이 아래에 짧은 페이지 네 개가 일 하나씩 다룹니다. 고객마다 주소 하나, 코드에서 나가는 메일, 코드로 들어오는 메일, 그리고 아직 준비 중인 테스트 실행마다 주소 하나.

고객마다 주소 하나

티켓, 레코드, 고객마다 전용 주소를 주세요. 따로 만들 것은 없습니다.

티켓 8123ticket-8123@in.yourapp.com
티켓 8124ticket-8124@in.yourapp.com
받는 사람ticket-8123@in.yourapp.com
보낸 사람ticket-8123@in.yourapp.com같은 주소
제품 안의 이메일

타입이 있는 클라이언트로 내 코드에서 메일을 보내고, 읽고, 정리하세요.

awaitopenemail.emails.send({
})
idmsg_3e91c7
queuedsentdelivered
email.openedemail.clicked
앱으로 들어오는 이메일

도메인에 도착한 메일이 몇 초 뒤 서명된 웹훅으로 내 서버에 닿습니다.

POSThooks.acme.dev/mail200
typeemail.received
가입 메일 테스트

테스트 실행마다 전용 주소를 주고, 받은 메일을 읽으세요.

signup-02@acme.com
이메일 주소 확인730915
signup-01@acme.com418204
signup-02@acme.com730915

질문

가입 전에 자주 묻는 것.

쓰기 전에 주소를 먼저 만들어야 하나요?

아니요. 캐치올이 켜져 있으면 [email protected]은 누가 처음 보내는 순간부터 받습니다. 오타나 지어낸 주소로 온 메일도 함께 들어오며, 스위치 하나로 캐치올을 닫을 수 있습니다.

메일이 도착한 것을 제 코드가 어떻게 아나요?

메일이 도착하고 몇 초 뒤에 엔드포인트가 서명된 웹훅을 받습니다. 이벤트에는 대화와 배달된 주소가 담겨 있으므로, id로 메일과 파일을 가져오면 됩니다.

제가 쓰는 언어용 클라이언트가 있나요?

TypeScript가 아니라면 아직 없습니다. 타입이 있는 클라이언트는 TypeScript가 먼저이고 나머지는 그 뒤를 따르므로, 지금은 다른 언어에서 문서화된 HTTP API를 직접 호출합니다.

관련 사례

같은 메일함으로 할 수 있는 다른 일.

제품이 보내는 메일

앱이 메시지를 보내면 OpenEmail이 자사 도메인으로 발송합니다. 모든 호출은 그 호출을 만든 키에 기록되고, 발송마다 읽을 수 있는 결과가 남습니다.

templateorder-receipt
202msg_9f2c7a14
email.sentmsg_9f2c7a14
email.deliveredmsg_9f2c7a14
email.openedmsg_9f2c7a14
메일함은 소프트웨어에 맡기고

에이전트에게 자기 주소와, 할 수 있는 일만큼 범위를 정한 키를 주세요. 읽고, 라벨을 붙이고, 초안을 쓰고, 보내며, 하는 호출은 모두 기록됩니다.

listThreadsgetThreadsearchMailsendEmail
버려도 되는 주소를

양식마다 주소를 요구합니다. 하나씩 따로 주고, 어디서 스팸이 오기 시작하는지 보고, 나머지는 건드리지 않고 그 주소만 끄세요.

q7k2m9@공용 도메인58:12
인증 코드09:41

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

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

OpenEmail

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

© 2026 OpenEmail. 모든 권리 보유.