No Mailtrap, No Problem! (with Docker)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 웹 개발자 (Laravel, Next.js, Django 프레임워크 사용자)
- Docker 환경에서 이메일 테스트를 수행하는 개발자
- 로컬 개발 환경에서 외부 서비스 의존 없이 이메일 테스트를 수행하고자 하는 사람
- 난이도: 중간 (Docker 기본 지식, 프레임워크 설정 경험 필요)
핵심 요약
- Mailhog는 SMTP 서버와 웹 UI를 제공하는 오픈소스 이메일 테스트 도구로, Docker를 통해 빠르게 설정 가능
- Docker 명령어
docker run -d --name mailhog -p 1025:1025 -p 8025:8025 mailhog/mailhog
로 로컬 환경에서 이메일 테스트 서버 실행 - Laravel, Next.js, Django에서 Mailhog를 사용할 때 SMTP 설정 변경이 필요 (예:
MAIL_HOST=localhost
,EMAIL_HOST=localhost
)
섹션별 세부 요약
1. Mailhog 소개 및 설치
- Mailhog는 SMTP 서버와 웹 UI를 제공하는 이메일 테스트 도구로, Mailtrap 대체 옵션
- Docker를 사용하면 환경 일관성 유지 및 시스템 충돌 방지 가능
- Docker 명령어 실행 후
http://localhost:8025
에서 웹 UI 접근 가능
2. Docker 기반 Mailhog 실행
docker run
명령어를 사용하여 Mailhog 컨테이너 실행- 포트 매핑: 1025 (SMTP), 8025 (웹 UI)
- Windows 사용자는 Docker Desktop UI에서 컨테이너 확인 가능
3. Laravel 설정
.env
파일에서 SMTP 설정 변경 (예:MAIL_HOST=localhost
,MAIL_PORT=1025
)- Tinkerwell 또는 라우트를 통해 이메일 테스트 수행
- 예시:
php artisan tinker
에서Mail::raw()
사용
4. Next.js (Nodemailer) 설정
npm install nodemailer
로 라이브러리 설치- API 라우트 (
pages/api/send-mail.js
)에서 Nodemailer 설정 및 이메일 전송 curl -X POST
명령어로 테스트 가능
5. Django 설정
settings.py
에서 SMTP 설정 변경 (예:EMAIL_HOST=localhost
,EMAIL_PORT=1025
)- Django 쉘 또는 관리 명령어를 통해 이메일 전송 테스트
- 예시:
send_mail()
함수 사용
6. 이메일 확인 및 검증
- Mailhog 웹 UI (
http://localhost:8025
)에서 전송된 이메일 확인 - 각 프레임워크별 테스트 결과 로그 및 UI 기반 검증 가능
결론
- Docker 기반 Mailhog 사용으로 외부 서비스 없이 이메일 테스트 가능
- Laravel, Next.js, Django에서 간단한 설정으로 Mailhog 통합 가능
- 로컬 개발 환경에서 이메일 기능 테스트 시 Mailhog 추천 (
No Mailtrap, No Problem!
)