Gửi mail trong Laravel 5.x

Tram Ho

1. Giới thiệu

Như các bạn đã biết, với đa số các ứng dụng thì việc gửi mail là một chức năng dường như không thể thiếu trong hàng tá các chức năng mà ứng dụng cần phải có. Hôm nay mình sẽ viết một bài hướng dẫn về cách gửi mail với Laravel 5.x.

Laravel sử dụng bộ thư viện SwiftMailer giàu tính năng và hoàn toàn miễn phí để gửi mail. Trước đây để gửi mail việc lựa chọn thư viện và config khá phức tạp, nhưng với bộ thư viện này trong Laravel, chúng ta có thể dễ dàng gửi mail mà không gặp quá nhiều rắc rối. SwiftMailer cung cấp các driver phổ biết như SMTP, Mailgun, SpartPost,…sẽ giúp chúng ta triển khai tính năng gửi mail đơn giản và dễ dàng hơn rất nhiều.

2. Cài đặt package

Tất cả các API drivers đề yêu cầu thư viện Guzzle HTTP, bạn có thể được cài đặt thông qua trình quản lý package Composer với lệnh sau đây:

3. Config file các biến môi trường của mail trong file .env

Mình giải thích một tí nhé

Phương thức gửi mail ở đây là SMTP, host của gmail là smtp.gmail.com, port là 587, MAIL_USERNAME là gmail của bạn và MAIL_PASSWORD chính là mật khẩu của bạn. Ở đây chúng ta cần lưu ý một vài điều sau đây:

Nếu gmail của bạn đang bật bảo mật 2 lớp thì sẽ không thể đăng nhập để gửi mail bằng password gmail như bình thường bạn vẫn dùng để login đâu nhé, lúc này bạn cần phải tạo mật khẩu ứng dụng cho gmail và lấy mật khậu đó điền vào key MAILPASSWORD. Có thể xem hướng dẫn cách tạo mật khẩu ứng dụng cho gmail tại đây

Hoặc nếu không thích dùng file .env thì chúng ta có thể config trong config/mail.php

Lúc này chúng ta có thể bỏ trống các key config mail ở file .env vì nếu có trong file .env thì giá trị sẽ được lấy từ file .env ra mà thôi, tiếp theo ở đây chúng ta tìm các key tương ứng với các key trong file .env và sửa lại cho đúng ý mình nhé, nếu không nó sẽ sử dụng các giá trị mặc định.

4. Test chức năng gửi mail

Ở đây chúng ta sẽ test chức năng gửi mail theo cách đơn giản nhất, chưa nói đến việc tạo class mailable, chúng ta sẽ chỉ test chứng năng gửi mail qua việc xử lý trong một controller.

Tạo một file controller

Copy đoạn code sau vào file MailController.php vừa tạo

Tạo một file template để test view của mail

resources/views/mail.blade.php
Copy đoạn code dưới vào file template vừa tạo

Tạo route

app/Http/routers.php
Copy đoạn code sau vào file route

Sau đó truy cập vào url sau để kiểm tra email cơ bản

và màn hình đầu ra sẽ trông giống như thế này

Tiếp theo, truy cập vào url http://localhost:8000/sendhtmlemail để check email với html

Màn hình đầu ra của html

Và sau cùng truy cập vào url sau http://localhost:8000/sendattachmentemail để kiểm tra email có tệp đính kèm. Chúng ta sẽ thấy có màn hình sau:

5. Kết thúc

Như vậy về cơ bản chúng ta đã nắm được cáhc config và điều kiện để gửi mail theo cách cơ bản nhất. Bài viết lần này còn là hướng dẫn khá cơ bản và chắc chắn có những thiếu sót mong các bạn góp ý và bỏ qua cho mình nhé 😅

Nguồn tham khảo:
https://laravel.com/docs/5.7/mail
https://www.tutorialspoint.com/laravel/laravel_sending_email.htm

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo