안녕하세요. 개인적으로 이메일 발송 라이브러리를 만들어서 공유해봅니다. 최근에 여러 프로젝트를 진행하면서 Node.js, Deno, Bun 등 다양한 런타임을 사용하게 되었는데, 이메일 발송 부분에서 매번 다른 라이브러리를 찾거나 설정을 다시 해야 하는 불편함이 있었습니다. 특히 Deno나 Bun에서는 Node.js용 이메일 라이브러리들이 제대로 동작하지 않는 경우가 많더라고요. 그래서 “한 번 작성하면 어디서든 동작하는” 이메일 라이브러리가 있으면 좋겠다는 생각에 Upyo를 만들게 되었습니다. Node.js, Deno, Bun, 그리고 에지 함수(edge functions)에서 동일한 코드로 작동합니다. 런타임별로 다른 설정이나 코드 변경이 필요 없습니다. 개인적으로 여러 의존성이 딸려 들어오는 것을 선호하지 않다 보니, 제로 의존성으로 제작하게 되었습니다. 이를테면 SMTP 트랜스포트도 smtp 패키지를 사용하지 않고, 직접 개발했습니다. 복잡한 설정 없이 몇 줄로 이메일을 보낼 수 있도록 설계했습니다: SMTP, Mailgun, SendGrid 등 다양한 이메일 서비스를 지원하며, 제공 업체를 바꿔도 애플리케이션 코드는 그대로 유지됩니다. Transport만 교체하면 됩니다. (다음 버전에는 Amazon SES 지원도 들어갑니다.) 실제 이메일을 보내지 않고도 이메일 로직을 테스트할 수 있는 MockTransport를 제공합니다. 개발 중에 실수로 실제 이메일이 발송되는 걱정 없이 테스트할 수 있습니다. 다양한 런타임에서 사용 가능합니다: 트랜스포트 패키지는 @upyo/smtp 외에도 @upyo/mailgun, @upyo/sendgrid, @upyo/ses, @upyo/mock이 있고, 앞으로도 더 추가될 예정입니다. 문서: https://upyo.org 개인적인 필요에 의해 시작한 프로젝트이지만, 혹시 비슷한 고민을 하고 계신 분들께 도움이 될 수 있을 것 같아 공유해봅니다. 아직 버전 0.1.0이지만, 꾸준히 개선해나갈 예정입니다. 피드백이나 기여는 언제든 환영합니다! Upyo는 한국어 “우표”에서 따온 이름입니다. 우표로 편지를 보내듯 이메일을 보낸다는 의미로 지었습니다.왜 만들게 되었나요?
주요 특징
크로스 런타임 호환성
제로 의존성
단순한 API
제공 업체 독립성
테스트 친화적
아직 부족한 부분들
사용해보기
코드: https://github.com/dahlia/upyo마무리