Mail API

HTTP API를 통한 트랜잭션 이메일: Brevo, Mailgun, Mailjet, Maileroo, Postmark, Mailchimp, Resend, SendGrid, MailerSend, Scaleway.

플러그인

Mail API

HTTP API를 통한 트랜잭션 이메일: Brevo, Mailgun, Mailjet, Maileroo, Postmark, Mailchimp, Resend, SendGrid, MailerSend, Scaleway.

  • 카테고리: email
  • 상태: 사용 가능
  • 버전: 0.3.1
  • 가격: 미확인
  • 출처: 공식 플러그인 레지스트리
  • 설치 방식: 레지스트리 샌드박스 플러그인
  • 확인일: 2026-10-21

설명

Mail API는 이메일 제공업체의 HTTP API를 EmDash의 이메일 전송 수단으로 만들어 줍니다. 로그인 링크, 초대장, 플러그인 이메일이 SMTP 서버 없이 Brevo, Mailgun, Postmark 등의 서비스를 통해 발송됩니다.

기능

  • 10개 제공업체: Brevo, Mailgun, Mailjet, Maileroo, Postmark, Mailchimp Transactional(Mandrill), Resend, SendGrid, MailerSend, Scaleway TEM.
  • 인증된 발신자: 제공업체에서 인증된 주소나 도메인을 선택하거나 직접 입력할 수 있습니다.
  • 계정 상태: 요금제, 크레딧, 할당량, 평판을 제공업체 API에서 읽어 옵니다.
  • 조치할 수 있는 오류: 제공업체 자체의 메시지에 HTTP 상태, 오류 코드, 힌트, 해결 페이지 링크, 원본 응답을 함께 보여 줍니다.
  • 재시도 대기열: 제공업체가 중단되었거나 속도 제한이 걸리면 이메일이 암호화된 대기열에서 기다렸다가 간격을 늘려 가며 다시 전송됩니다.
  • 기록과 로그: 모든 전송의 상태, 메시지 ID, 시도 횟수, 소요 시간을 기록하며 필터, 재전송, 14일 차트, 대시보드 위젯을 제공합니다.
  • 각 제공업체 페이지에 테스트 양식이 있습니다.
  • 암호화: API 키는 EmDash 시크릿이고, 보관되는 이메일 내용은 암호화되며, 로그인 이메일은 절대 보관되지 않습니다.
  • 영어, 프랑스어, 독일어 관리자 화면을 지원하며 휴대폰에서도 사용할 수 있습니다.

제공업체

제공업체자격 증명나열되는 발신자계정 상태
BrevoAPI 키주소요금제, 크레딧
MailgunAPI 키, 도메인, 리전도메인도메인 상태
MailjetAPI 키, 시크릿 키주소, 도메인없음
Maileroo전송 키없음없음
Postmark서버 토큰없음서버, 모드
Mailchimp TransactionalMandrill 키도메인평판, 할당량
ResendAPI 키도메인요금제, 할당량
SendGridAPI 키주소, 도메인요금제, 크레딧
MailerSendAPI 토큰주소, 도메인API 할당량
Scaleway TEM시크릿 키, 프로젝트 ID도메인상품, 사용량

발신자가 나열되지 않는 경우에는 주소를 직접 입력하세요.

설치

요구 사항

  • 플러그인 샌드박스 러너가 있는 EmDash 1.3.0 이상: Cloudflare Worker Loader(Workers Paid 요금제) 또는 Node.js의 @emdash-cms/sandbox-workerd.
  • 사이트에 EMDASH_ENCRYPTION_KEY가 필요합니다. API 키를 암호화하는 데 사용됩니다. npx emdash secrets generate로 생성하고, Cloudflare에서는 wrangler secret put EMDASH_ENCRYPTION_KEY로 저장하세요. 사본을 시크릿 매니저에 보관하세요. 이것이 없으면 데이터베이스 백업은 쓸모가 없습니다.
  • 재시도 대기열을 위한 스케줄러: Node.js에는 내장되어 있습니다. Cloudflare에서는 * * * * * cron 트리거와 scheduled 핸들러가 필요합니다(EmDash 템플릿에는 둘 다 포함되어 있습니다).
  • 지원되는 제공업체 중 하나의 계정과 API 키.

설치 방법

  1. 플러그인 레지스트리에서 Mail API를 설치합니다.
  2. 권한을 검토하고 확인합니다. 제공업체 API 호스트로의 요청과 EmDash 이메일 전달만 허용됩니다.

npm으로 설치하려면 pnpm add @devbitme/emdash-plugin-apimail을 실행한 다음, astro.config.mjs의 emdash() 통합 안에 있는 sandboxed: [...]에 기본 import를 추가하세요.

설정

  1. 관리자 화면에서 Mail API를 열고 사용할 제공업체의 Configure를 선택합니다.
  2. 키를 붙여 넣고 저장합니다. Account 섹션에서 키가 작동하는지 확인할 수 있습니다.
  3. Send a test email에서 인증된 발신자를 선택하고 본인 주소를 입력한 뒤 보냅니다. 해당 발신자를 유지하려면 Use as the default sender를 켜 둡니다.
  4. 목록에서 제공업체 카드의 Activate를 클릭합니다.
  5. 여러 이메일 전송 수단이 설치되어 있다면 Settings → Email에서 Mail API를 선택합니다. astro dev에서는 EmDash의 콘솔 전송 수단도 그중 하나로 취급됩니다.

설정 항목

Queue & history 탭에서는 이메일이 대기열에서 기다릴 수 있는 시간(기본값은 로그인 이메일 15분, 나머지는 24시간), 이메일 내용을 보관할지 여부, 기록과 로그의 보관 기간(기본값 30일)을 설정합니다.

전체 문서: https://git.devbit.me/devbit.me/emdash-plugin-apimail

자주 묻는 질문

SMTP 서버가 필요한가요?

아니요. Mail API는 HTTPS로 제공업체의 HTTP API를 호출하므로 Cloudflare Workers처럼 SMTP를 사용할 수 없는 환경에서도 작동합니다.

EmDash의 “Send test email”은 “Failed to send test email”이라고만 표시합니다.

제공업체 페이지의 Send a test email 양식을 사용하세요. 제공업체의 메시지, 힌트, 원본 응답이 표시됩니다. 오류는 Logs와 서버 로그에도 기록됩니다.

발신자 목록이 비어 있거나 HTTP 401 또는 403이 표시됩니다.

해당 키로 전송은 할 수 있지만 발신자를 나열할 수는 없습니다. Resend는 Full access 키가 필요하고, SendGrid는 Sender Authentication과 User Account에 대한 읽기 권한, MailerSend는 Domains와 Sender identity, Scaleway는 TransactionalEmailReadOnly가 필요합니다. Mailgun은 도메인 전송 키가 아닌 계정 키가 필요합니다. 발신자 주소는 직접 입력할 수 있습니다.

오류에 IP 주소가 허용되지 않는다고 나옵니다.

호스트의 송신 IP를 제공업체의 허용 목록에 추가하거나 제한을 끄세요. 오류에 해당 페이지로 연결되는 링크가 있습니다.

제공업체가 중단되면 어떻게 되나요?

네트워크 오류, 타임아웃, HTTP 429 및 5xx가 발생하면 이메일이 암호화된 대기열에 들어갑니다. 1분, 5분, 15분, 30분 후, 이어서 1시간, 2시간, 그 뒤로는 4시간마다 그 시점에 활성화된 제공업체를 통해 재시도합니다. 로그인 이메일은 15분 후, 나머지 이메일은 24시간 후에 만료됩니다. 잘못된 키나 거부된 수신자 같은 영구적인 오류는 재시도하지 않습니다.

대기열이 전혀 실행되지 않습니다.

Mail API의 Security 탭을 여세요. 예약된 작업이 나열되고 Repair 버튼이 있습니다. Cloudflare에서는 cron 트리거와 scheduled 핸들러를 확인하세요.

내 이메일 내용이 저장되나요?

대기열에서 기다리는 동안에만, 또는 Keep email content in the history를 켜면 기록에 저장됩니다. 두 경우 모두 암호화됩니다. 로그인 및 초대 이메일은 전송 후 절대 보관되지 않습니다.

여러 제공업체를 사용할 수 있나요?

네. 여러 개를 설정하고 전송에 사용할 제공업체에서 Activate를 클릭하세요. 장애가 발생하면 다른 제공업체를 활성화하세요. 대기열에 있던 이메일이 해당 제공업체를 통해 다시 전송됩니다.

보안

취약점 신고

[email protected]로 이메일을 보내 주세요. 먼저 공개 이슈를 열지 말아 주세요.

권한

  • 네트워크 요청: 제공업체 API 호스트로만 제한됩니다. api.brevo.com, api.mailgun.net, api.eu.mailgun.net, api.mailjet.com, api.us.mailjet.com, smtp.maileroo.com, api.postmarkapp.com, mandrillapp.com, api.resend.com, api.sendgrid.com, api.eu.sendgrid.com, api.mailersend.com, api.scaleway.com.
  • 이메일 전송 수단: EmDash가 발신 이메일을 플러그인에 넘기면 플러그인이 활성화된 제공업체를 통해 보냅니다.

플러그인은 EmDash의 샌드박스에서 실행되며 그 밖의 어떤 것에도 접근할 수 없습니다.

API 키

API 키는 EmDash 시크릿 설정이며 사이트의 EMDASH_ENCRYPTION_KEY로 AES-GCM 암호화됩니다. 저장된 키는 브라우저로 다시 전달되지 않으며, 관리자 화면에는 마지막 5자만 표시됩니다. 제공업체가 오류 메시지에 되돌려 보낸 설정된 시크릿은 마스킹됩니다.

저장되는 데이터

  • 기록: 수신자, 제목, 제공업체, 상태, 메시지 ID, 시도 횟수, 소요 시간, 오류. 기본적으로 30일 후 삭제됩니다.
  • 이메일 내용: 이메일이 대기열에서 기다리는 동안에만, 또는 켠 경우 기록에 보관됩니다. 무작위 256비트 키로 AES-GCM 암호화되며, 그 키 자체도 EmDash 시크릿으로 저장됩니다. 로그인 및 초대 이메일은 전송 후 절대 보관되지 않습니다.
  • 로그: 실패, 대기열 실행, 정리. 기록과 함께 삭제됩니다.
  • 인증된 발신자와 계정 상태: 설정의 지문과 함께 플러그인 스토리지에 캐시되며 키는 포함되지 않습니다.

이메일은 활성화된 제공업체의 API로만 전송됩니다. 그 밖의 어떤 것도 사이트를 떠나지 않습니다.

공개 라우트

공개된 라우트는 하나입니다: GET /_emdash/api/plugins/apimail/logo?p=. 플러그인에 포함된 제공업체 로고를 제공하며 어떤 데이터도 읽지 않습니다.

관리자

관리자 페이지는 비공개 라우트를 사용합니다. 플러그인이 실행되기 전에 EmDash는 플러그인 관리 권한이 있는 로그인한 사용자와 CSRF 헤더를 요구합니다.

변경 내역

0.3.1

  • 제공업체 카드를 한 줄에 두 개가 아닌 세 개 표시: 데스크톱에서 목록이 더 촘촘해졌습니다.
  • 각 제공업체 카드에 Website 링크 추가(새 탭에서 열림).
  • Set as default가 Activate로 바뀌었습니다. 휴대폰의 카드에 들어갈 만큼 짧습니다.
  • 제공업체 페이지가 저장된 데이터로 즉시 열리며 데이터의 경과 시간을 표시합니다. 제공업체는 키를 저장할 때나 **Refresh from **을 사용할 때만 호출되며, 호출에 걸린 시간이 메시지로 표시됩니다.

0.3.0

  • 설정된 각 제공업체의 카드에 Set as default 버튼 추가.
  • 인증된 발신자 또는 계정 상태 읽기에 실패하면 로그에 기록되고, 키에 권한이 없는 경우를 제외하고 다음 페이지 로드 시 재시도됩니다.
  • 발신자 목록에 읽은 시각이 표시됩니다(오류 후에도 마찬가지).
  • 관리자 페이지가 휴대폰에 맞게 조정되었습니다. 제공업체 카드는 한 줄에 두 개, 통계 카드는 최대 세 개, 긴 값은 별도의 줄에 표시되며 기록 열이 줄었습니다.
  • 메뉴 항목을 짧게 변경: History, Queue, Logs.
  • 레이블, 로그, 오류, 테스트 이메일 제목에서 긴 대시 대신 일반 하이픈 사용.
  • 번들 크기 감소: 제공업체 로고는 무손실 WebP 타일입니다.
  • 레지스트리 목록: 설명, 설치, FAQ, 변경 내역, 보안 탭과 배너.

0.2.0

  • 제공업체에서 인증된 발신자 선택: 인증된 주소, 인증된 도메인의 모든 주소 또는 직접 입력. Sender 탭과 각 테스트 양식에서 사용할 수 있습니다.
  • 각 제공업체 페이지에 계정 상태 표시: 요금제, 크레딧, 할당량, 평판.
  • 테스트에 더 이상 설정된 발신자가 필요하지 않으며, Use as the default sender가 성공한 발신자를 유지합니다.
  • 저장된 키의 마지막 5자가 표시됩니다.
  • 독일어 관리자 화면.