MoeMail
블로그로 돌아가기

Node.js에서 프로그래밍 방식으로 이메일 받기

Node.js에서 이메일을 받으려면 보통 SMTP/IMAP 서버를 돌리거나 Gmail API를 연결해야 합니다. 그러나 테스트, 자동화, 그리고 대부분의 앱 흐름에는 더 단순한 길이 있습니다. HTTP로 통신하는 일회용 받은편지함 API죠. 이 글은 개발자를 위한 이메일 테스트의 일부입니다.

받는 두 가지 방법

받은편지함을 폴링해 새 메시지를 가져오거나, webhook을 등록해 서비스가 각 메시지를 푸시하게 하면 됩니다. 폴링은 시작하기 가장 간단하고, webhook은 지연과 규모 면에서 더 낫습니다(수신 이메일 webhook 참고).

만들기 & 폴링(fetch)

const API = 'https://moemail.app/api'
const H = { 'X-API-Key': process.env.MAIL_KEY }

async function createInbox() {
  const res = await fetch(API + '/emails/generate', { method: 'POST', headers: H })
  return res.json() // { id, address }
}

async function readLatest(id) {
  const res = await fetch(API + '/emails/' + id + '/messages', { headers: H })
  const data = await res.json()
  return data.messages[0] // newest first
}

Node 18 이상에는 fetch가 내장되어 있습니다. 메시지가 나타날 때까지 짧은 간격으로 readLatest를 반복한 다음 .text / .html을 읽으세요.

또는 webhook 받기(Express)

import express from 'express'
const app = express()
app.use(express.json())

app.post('/inbound', (req, res) => {
  const mail = req.body // verify the signature first in production
  console.log('got mail for', mail.to, '-', mail.subject)
  res.sendStatus(200) // respond fast; non-2xx triggers retries
})

app.listen(3000)

핸들러는 빠르고 멱등하게 유지하세요. 같은 기본 동작이 Playwright 테스트와 Python 버전을 떠받치고, CI에서도 그대로 동작합니다.

시작하기

프로필에서 키를 받고 OpenAPI 문서를 읽은 뒤, 메일박스를 만들어 시험해 보세요.