SMTP로 보내기
SMTP를 쓰는 소프트웨어를 위한, POST /emails와 같은 발송입니다.
연결하기
SMTP 서버를 통해 메일을 보내는 것이라면 무엇이든 OpenEmail을 통해 보낼 수 있습니다. 프레임워크의 메일러, CMS, 모니터링 도구, 프린터 등입니다. 사용자 이름 openemail과 비밀번호로 쓰는 API 키로 로그인하세요. 키에는 emails:send 스코프가 필요하며, 키가 넘기는 메시지는 그 키로 호출한 POST /emails와 같은 발송입니다.
| 설정 | 값 |
|---|---|
| 호스트 | smtp.openemail.uk |
| 포트 | SSL/TLS는 465, STARTTLS는 587 |
| 사용자 이름 | openemail |
| 비밀번호 | emails:send 스코프가 있는 API 키 |
| 로그인 | PLAIN 또는 LOGIN, 대부분의 소프트웨어가 일반 비밀번호라고 부르는 방식 |
암호화되지 않은 연결은 전혀 받지 않으며, 포트 587에서는 STARTTLS 이후에만 로그인이 열립니다. API 키로는 보내기 위한 로그인만 할 수 있습니다. IMAP이나 POP3로 메일함을 읽으려면 앱 비밀번호가 필요합니다.
테스트 메시지 보내기
메시지를 message.eml로 저장하고 curl로 넘기세요. From은 키가 발신자로 쓸 수 있는 주소여야 합니다.
From: Acme <[email protected]>To: [email protected]Subject: Hello over SMTPMessage-ID: <[email protected]> It works.curl --url "smtps://smtp.openemail.uk:465" \ --user "openemail:$OPENEMAIL_API_KEY" \ --mail-from "[email protected]" \ --mail-rcpt "[email protected]" \ --upload-file message.eml --crlfcurl --ssl-reqd --url "smtp://smtp.openemail.uk:587" \ --user "openemail:$OPENEMAIL_API_KEY" \ --mail-from "[email protected]" \ --mail-rcpt "[email protected]" \ --upload-file message.eml --crlf수락된 메시지에 대한 응답은 250 2.0.0 OK queued as이며, 그 뒤에 메시지의 id가 붙습니다. 이 id는 GET /emails/{id}가 받는 바로 그 id이므로, 메시지와 그 이벤트, 추적은 다른 발송과 똑같이 읽을 수 있습니다.
메시지가 발송이 되는 과정
메시지는 REST 발송과 같은 경로로 읽히고 발송됩니다. 따라서 바이트 그대로 전달되지 않고 각 파트로부터 다시 조립됩니다.
| 메시지에서 | 발송에서 |
|---|---|
| From | from. 필수이며, 키를 대조해 확인하는 발신자입니다. MAIL FROM의 주소는 있기만 하면 됩니다. |
| RCPT TO | 메시지가 전달되는 대상이며, 최대 50명입니다. To에 적힌 수신자는 to, Cc에 적힌 수신자는 cc, 어느 쪽에도 없는 수신자는 bcc입니다. 적어도 한 명은 To에 있어야 합니다. |
| Reply-To | replyTo, 첫 번째 주소입니다. |
| Subject | subject. |
| 텍스트 파트와 HTML 파트 | text와 html. HTML이 cid:로 참조하는 이미지는 그 자리에 삽입됩니다. |
| 첨부 파일 | attachments: 파일은 최대 20개, 합계 5 MB까지입니다. |
| 그 밖의 헤더 | X-*, List-*, Precedence, Auto-Submitted, Importance, Priority, Feedback-ID는 유지됩니다. 그 밖의 헤더는 모두 빠집니다. |
| X-OpenEmail-Stream | stream: transactional 또는 broadcast. 이 헤더는 메시지가 나가기 전에 제거됩니다. |
적용되는 것
경로가 하나이므로, REST 발송에 적용되는 모든 것이 여기에도 적용됩니다.
- 키의 스코프, 그리고 키가 제한된 주소와 도메인.
- 발신자 확인:
From은 발송할 수 있는 도메인의 주소이면서 키가 발신자로 쓸 수 있는 주소여야 합니다. - 워크스페이스의 발송 허용량과 발송 차단 목록.
- 보내는 주소의 서명과 열람 및 클릭 추적.
signature도tracking도 지정하지 않은 REST 발송과 같습니다. - 레인: 단체 발송 레인이 일시중지된 동안에는
X-OpenEmail-Stream: broadcast가 붙은 메시지가 거부됩니다. - 웹훅과 전달 이벤트. 둘 다
250응답에 담긴 id로 메시지를 가리킵니다.
재시도
Message-ID가 있는 메시지는 한 번만 발송됩니다. 같은 수신자에게 같은 Message-ID를 다시 넘기면 첫 메시지의 id로 응답하고 아무것도 보내지 않으므로, 연결이 끊긴 뒤 재시도하는 소프트웨어가 두 번 보낼 수 없습니다. 같은 메시지라도 수신자가 다르면 별개의 발송입니다. 멱등성을 참고하세요.
응답과 한도
| 응답 | 발생 조건 |
|---|---|
| 250 2.0.0 | 메시지가 대기열에 들어갔으며, 그 id가 뒤따릅니다. |
| 535 5.7.8 | 로그인에 실패했습니다. 키가 틀렸거나 폐기되었거나 만료된 경우, 키에 emails:send가 없는 경우, 또는 API 키를 다른 사용자 이름으로 쓴 경우입니다. |
| 452 4.5.3 | 메시지 하나에 수신자가 50명을 넘습니다. 메일 소프트웨어가 나머지를 알아서 다른 메시지로 보냅니다. |
| 552 5.3.4 | 메시지가 25 MB보다 큽니다. |
| 550 5.6.0 | 메시지를 쓰인 그대로는 보낼 수 없습니다. From이 없거나, To에 아무도 없거나, 첨부 파일이 너무 많거나 크거나, 알 수 없는 레인인 경우입니다. 어느 경우인지는 응답 텍스트에 나옵니다. |
| 550 5.7.1 | 발송이 거부되었습니다. 키가 그 주소를 발신자로 쓸 수 없거나, 도메인이 아직 발송할 수 없거나, 단체 발송 레인이 일시중지된 경우입니다. |
| 452 4.7.0 | 워크스페이스의 발송 허용량을 다 썼습니다. |
| 451 4.7.1 | 키 하나에서 1분에 메시지가 300통을 넘었습니다. 메일 소프트웨어가 기다렸다가 다시 시도합니다. |
| 451 4.3.0 | 우리 쪽 장애입니다. 잠시 후 다시 시도하세요. |
보낼 것이 없는 연결은 5분 뒤에 닫힙니다. 연결 하나로 메시지를 몇 통이든 차례로 보낼 수 있습니다.
요청 로그에서
키가 넘기는 모든 메시지는 그 키의 요청 로그에 한 줄로 남습니다. 메서드는 SMTP, 경로는 /emails이며, 상태는 REST 발송이었다면 받았을 값입니다. 대기열에 들어가면 202, 거부되면 같은 오류 code와 함께 403, 422 또는 429입니다. GET /keys/{id}/requests?path=/emails는 이를 REST 발송과 나란히 나열합니다. 실제 키로 로그인에 실패하면 그 키의 활동에 나타납니다.