Dùng Mailcatcher cho việc test việc gửi email cho Laravel app

2nd Nov 2022
Dùng Mailcatcher cho việc test việc gửi email cho Laravel app
Table of contents

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.

>> Mailtrap.io. Thật đơn giản để kiểm tra việc gửi mail ở local

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

  1. Trên terminal gõ : gem install mailcatcher
  2. Chạy mailcatcher: gõ lệnh mailcatcher
  3. 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.

Bạn thấy bài viết này như thế nào?
1 reaction

Add new comment

Image CAPTCHA
Enter the characters shown in the image.

Related Articles

Mỗi kết nối cơ sở dữ liệu được định nghĩa trong một mảng, với tên kết nối là khóa của mảng

Eager Loading là một kỹ thuật tối ưu hóa truy vấn cơ sở dữ liệu trong Laravel, giúp tăng tốc độ truy vấn và giảm số lượng truy vấn cần thiết để lấy dữ liệu liên quan đến một bản ghi.

Để sử dụng Eager Loading với điều kiện trong Laravel, bạn có thể sử dụng phương thức whereHas hoặc orWhereHas trong Eloquent Builder.

E hiểu đơn giản vầy nha. auth() hay Auth trong laravel là những function global hay class, nó cũng chỉ là 1 thôi

Xin chào các bạn, tuần này mình sẽ viết một bài về cách xử lý Real Time(thời gian thực) với Laravel và Pusher