[Laravel Series] 19. Gửi email trong Laravel

Laravel sử dụng một thư viện miễn phí, giàu chức năng “SwiftMailer” để gửi email. Sử dụng chức năng của thư viện, chúng ta có thể gửi email dễ dàng mà không gặp nhiều khó khăn. Template của email được load theo cùng cách với views, có nghĩa là bạn có thể sử dụng cú pháp Blade và chèn dữ liệu vào trong templates. Sau đây là cú pháp của chức năng gửi mail.

Cú pháp void send(string|array $view, array $data, Closure|string $callback)
Tham số
  • $view(string|array) – Tên của view chứa tin nhắn email.

  • $data(array) – Mảng của dữ liệu để truyền sang view

  • $callback – một Callback kín sẽ nhận một instance tin nhắn, cho phép bạn tùy chọn người nhận, tiêu đề và các khía cạnh khác nhau trong một tin nhắn

Trả về Không
Mô tả Gửi email.

Chú ý: Nên học PHP thật thuần thục để hiểu hơn khi tiếp cận Laravel.

Trong đối số thứ 3, con trỏ hàm $callback  nhận được instance tin nhắn và với instance đó, chúng ta có thể gọi những chức năng sau đây và thay thế tin nhắn phía dưới:

  • $message->subject(‘Welcome to the Vietpro Education’);
  • $message->from(’email@example.com’, ‘Mr. Example’);
  • $message->to(’email@example.com’, ‘Mr. Example’);

Một vài phương thức không phổ biến:

  • $message->sender(’email@example.com’, ‘Mr. Example’);
  • $message->returnPath(’email@example.com’);
  • $message->cc(’email@example.com’, ‘Mr. Example’);
  • $message->bcc(’email@example.com’, ‘Mr. Example’);
  • $message->replyTo(’email@example.com’, ‘Mr. Example’);
  • $message->priority(2);

Để đính kèm hoặc nhúng file, bạn có thể dùng phương thức sau:

  • $message->attach(‘path/to/attachment.txt’);
  • $message->embed(‘path/to/attachment.jpg’);

Mail có thể gửi HTML hoặc text. Bạn có thể chọn loại mail bạn muốn gửi trong đối số đầu tiên bằng cách truyền một mảng như sau. Loại mặc định là mail HTML. Nếu bạn muốn gửi một email với văn bản đơn giản thì sử dụng cú pháp sau.

Cú pháp

Trong cú pháp này, đối số đầu tiên sẽ cần sử dụng 1 mảng. Sử dụng “text” như là key “tên của view” và giá trị của key.

Ví dụ

Bước 1 – Giờ chúng ta sẽ gửi một email từ tài khoản Google và để làm điều này bạn cần phải thiết lập tài khoản Gmail trong file môi trường của Laravel – .env. Kích hoạt xác minh 2 bước trong tài khoản Google và tạo một ứng dụng với mật khẩu tùy chọn bằng cách chỉnh sửa các tham số .env như sau:

Bước 2 – Sau khi thay đổi file .env hãy chạy 2 dòng lệnh sau đây để xóa cache và khởi động lại server Laravel.

Bước 3 – Tạo một controller gọi là MailController bằng cách chạy lệnh:

Bước 4 – Sau khi chạy thành công, kết quả sẽ là:

mailcontroller

Bước 5 – Copy code sau vào file app/Http/Controllers/MailController.php

Bước 6 – Copy code sau vào file resources/views/mail.blade.php

Bước 7 – Thêm những dòng sau vào app/Http/routes.php.

Bước 8 – Vào URL sau để test email cơ bản

http://localhost:8000/sendbasicemail

Bước 9 – Màn hình sẽ hiển thị ra như sau. Vào check inbox xem email gửi đến thế nào nhé:

basic_email_sent

Bước 10 – Vào URL sau để test HTML email:

http://localhost:8000/sendhtmlemail

Bước 11 – Màn hình sẽ hiển thị ra như sau. Check inbox để xem email HTML:

html_email

Bước 12 – Vào URL sau để test HTML email với file đính kèm

http://localhost:8000/sendattachmentemail

Bước 13 – Kết quả:

email_sent

Chú ý: Trong file MailController.php, địa chỉ email từ phương thức nên là địa chỉ email từ địa chỉ mà bạn có thể gửi. Nói chung, nó nên là địa chỉ email được config trong server của bạn.

>>> Xem full Series về Laravel Framework <<<

Leave a comment

Your email address will not be published. Required fields are marked *