Dùng Mailcatcher cho việc test việc gửi email cho Laravel app
1. MailCatcher là gì ?
MailCatcher là một Ruby Gem chạy một SMTP Server đơn giản, có thể bắt bất kỳ message nào được gửi đi trên máy local và hiển thị nó trên giao diện web.
Bạn chỉ cần chạy mailcatcher, sau đó setting app của bạn gửi email thông qua địa chỉ smtp://127.0.0.1:1025 thay cho SMTP server, sau đó có thể xem các thư được gửi đi tại địa chỉ http://127.0.0.1:1080.
Trong quá trình Dev bạn chỉ cần thử các chức năng và email gửi đi sẽ xem được nội dung trưc tiếp trên nền web ( bạn không thể kiểm tra được css, cho email chỉ hỗ sợ một số css, trên browser email được hiển thị dưới dạng HTML&CSS nên giao diện có thể khác với email được gửi đi)
Có thể xem thêm về MailCatcher tại https://mailcatcher.me/
2. Cài đặt MailCatcher
Bạn cần sẵn ruby trên máy của bạn
- Trên terminal gõ :
gem install mailcatcher
- Chạy mailcatcher: gõ lệnh
mailcatcher
- Dùng browser truy cập vào Go to http://localhost:1080/ bạn sẽ thấy giao diện đọc thư của MailCatcher.
Sau đó chỉ cần config app của bạn gửi email thông qua địa chỉ smtp://127.0.0.1:1025, bạn sẽ thấy email gửi đi sẽ hiện trên địa chỉ trên giao diện đọc thư của MailCatcher ở trên.
Bạn có thể xem thêm các lệnh liên quan tới Mailcatcher bằng cách gõ
mailcatcher --help
trên Terminal
3. Setup cho Laravel Project
Trong file .env bạn có thể thay phần thông tin gửi email bằng thiết lập dưới:
MAIL_DRIVER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Laravel app của bạn sẽ gửi email thông qua smtp mà Mailcatcher đã chạy.
4.Test email với MailCatcher và Laravel built-in testing ?
Nếu bạn dùng Laravel built-in testing, bạn cần viết 1 class extend default TestCase class của Laravel, sau đó dùng GuzzleHttp\Client
để viết các method get email, delete, check Inbox ... thông qua việc request tới giao diện web của mailcatcher và parse HTML để kiểm tra các kết quả theo ý muốn.