Sử dụng different mail drivers dynamically trong Laravel Chuyên mục PHP và Laravel 2023-08-02 317 Lượt xem 90 Lượt thích 0 Bình luận

Gửi email trong Laravel thật dễ dàng. Tất cả những gì bạn phải làm là cấu hình service mặc định của mình trong config/mail.php và cấu hình liên quan của nó trong tệp config/services.php.
Chẳng hạn, nếu bạn muốn sử dụng AWS SES, trước tiên bạn cần thiết lập cấu hình của nó trong config/services.php như này.
return [
// ...
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
];
Và sau đó đặt nó làm mặc định trong config/mail.php…
return [
// code commented for brevity
'driver' => env('MAIL_DRIVER', 'ses'),
// code commented for brevity
]
Bây giờ, mỗi khi bạn cố gắng gửi email bằng cách sử dụng facade Illuminate\Support\Facades\Mail, nó sẽ luôn sử dụng tùy chọn mặc định. tức là "ses" trong trường hợp của chúng ta.
Nhưng nếu bạn muốn một số loại linh hoạt sử dụng các mailers khác nhau ở những nơi khác nhau thì sao? Um thùi, Laravel giúp bạn giải quyết vấn đề này.
Dynamic Mail Drivers
Laravel 7 đã giới thiệu một phương thức mới gọi là mailer trong Mail facade cho bạn khả năng chọn các mail drivers khác nhau cho các tình huống khác nhau. Ví dụ: ứng dụng của bạn có thể sử dụng Postmark để gửi mail giao dịch trong khi sử dụng Amazon SES để gửi thư hàng loạt.
Đây là cách bạn có thể sử dụng phương thức mailer để chọn một trong những mailer mà bạn đã định cấu hình trong file config/services.php.
Mail::mailer('postmark')
->to($request->user())
->send(new OrderShipped($order));
Bạn có thể nhanh chóng chuyển sang chế độ khác, chẳng hạn như “mandrill”, đối với một số trường hợp nhất định như vậy (miễn là bạn đã định cấu hình nó trước đó).
Mail::mailer('mandrill')
->to($request->user())
->send(new OrderShipped($order));
Nó là dễ dàng như vậy! hehe

Bình luận (0)