Laravel sử dụng thư viện SwiftMailer giàu tính năng miễn phí để gửi email. Sử dụng chức năng thư viện, chúng tôi có thể dễ dàng gửi email mà không gặp quá nhiều rắc rối. Các mẫu e-mail được tải theo cùng một cách với chế độ xem, có nghĩa là bạn có thể sử dụng cú pháp Blade và đưa dữ liệu vào các mẫu của mình.
Bảng sau đây cho thấy cú pháp và các thuộc tính của function gửi -

Cú pháp
void send(string|array $view, array $data, Closure|string $callback)
Thông số
  • $view(string|array) − tên view chưa thông báo mail

  • $data(array) − mảng dữ liệu truyền qua view

  • $callback − một cuộc gọi lại đóng nhận một phiên bản tin nhắn, cho phép bạn tùy chỉnh người nhận, chủ đề và các khía cạnh khác của thông điệp mail

Trả vềKhông có gì
Mô tảGửi mail

Trong đối số thứ ba, bao đóng $callback đã nhận được cá thể thông báo và với trường hợp đó, chúng ta cũng có thể gọi các hàm sau và thay đổi thông báo như dưới đây.

  • $message → subject('Welcome to the Tutorials Point');
  • $message → from('email@example.com', 'Mr. Example');
  • $message → to('email@example.com', 'Mr. Example');

Một số phương pháp ít phổ biến hơn bao gồm -

  • $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 các tệp, bạn có thể sử dụng các phương pháp sau -

  • $message → attach('path/to/attachment.txt');
  • $message → embed('path/to/attachment.jpg');

Thư có thể được gửi dưới dạng HTML hoặc text. Bạn có thể chỉ ra loại mail mà bạn muốn gửi trong đối số đầu tiên bằng cách chuyển một mảng như dưới đây. Loại mặc định là HTML. Nếu bạn muốn gửi mail văn bản đơn giản thì hãy sử dụng cú pháp sau.
Cú pháp:

Mail::send([‘text’=>’text.view’], $data, $callback);

Trong cú pháp này, đối số đầu tiên có một mảng. Sử dụng text làm tên khóa của view làm giá trị của khóa.
VD

Bước 1 - Bây giờ chúng tôi sẽ gửi email từ tài khoản Gmail và bạn cần định cấu hình tài khoản Gmail của mình trong tệp môi trường Laravel - tệp .env. Cho phép xác minh 2 bước trong tài khoản Gmail của bạn và tạo mật khẩu dành riêng cho ứng dụng theo sau bằng cách thay đổi các tham số .env như được hiển thị bên dưới.

.env

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls

Bước 2 - Sau khi thay đổi tệp .env, hãy thực hiện hai lệnh bên dưới để xóa bộ đệm và khởi động lại máy chủ Laravel.
 

php artisan config:cache

 

Bước 3 - Tạo một controller có tên MailController bằng cách thực hiện lệnh sau.

php artisan make:controller MailController --plain

Bước 4 - Sau khi thực hiện thành công, bạn sẽ nhận được đầu ra sau -
 

Bước 5 - Sao chép mã sau vào

app/Http/Controllers/MailController.php file.

app/Http/Controllers/MailController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class MailController extends Controller {
   public function basic_email() {
      $data = array('name'=>"Virat Gandhi");
   
      Mail::send(['text'=>'mail'], $data, function($message) {
         $message->to('abc@gmail.com', 'Tutorials Point')->subject
            ('Laravel Basic Testing Mail');
         $message->from('xyz@gmail.com','Virat Gandhi');
      });
      echo "Basic Email Sent. Check your inbox.";
   }
   public function html_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('abc@gmail.com', 'Tutorials Point')->subject
            ('Laravel HTML Testing Mail');
         $message->from('xyz@gmail.com','Virat Gandhi');
      });
      echo "HTML Email Sent. Check your inbox.";
   }
   public function attachment_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('abc@gmail.com', 'Tutorials Point')->subject
            ('Laravel Testing Mail with Attachment');
         $message->attach('C:\laravel-master\laravel\public\uploads\image.png');
         $message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
         $message->from('xyz@gmail.com','Virat Gandhi');
      });
      echo "Email Sent with attachment. Check your inbox.";
   }
}

Bước 6 - Sao chép mã sau vào tệp resources/views/mail.blade.php.

resources/views/mail.blade.php

<h1>Hi, {{ $name }}</h1>
<p>Sending Mail from Laravel.</p>

 Bước 7 - Thêm các dòng sau trong app/Http/routes.php.

app/Http/routes.php

Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');

Bước 8 - Truy cập URL sau để kiểm tra email cơ bản.
 

http://localhost:8000/sendbasicemail

Bước 9 - Màn hình đầu ra sẽ trông giống như thế này. Kiểm tra hộp thư đến mail của bạn để xem đầu ra email cơ bản.


Bước 10 - Truy cập URL sau để kiểm tra email HTML.
 

http://localhost:8000/sendhtmlemail

Bước 11 - Màn hình đầu ra sẽ trông giống như thế này. Kiểm tra hộp thư đến mail của bạn để xem đầu ra email html.

Bước 12 - Truy cập URL sau để kiểm tra email HTML có tệp đính kèm.

http://localhost:8000/sendattachmentemail

Bước 13 - Bạn có thể thấy đầu ra sau
 

Lưu ý - Trong tệp MailController.php, địa chỉ email trong phương thức from phải là địa chỉ email mà bạn có thể gửi địa chỉ email từ đó. Nói chung, nó phải là địa chỉ email được cấu hình trên máy chủ của bạn.

Nguồn : https://www.tutorialspoint.com/laravel/laravel_sending_email.htm

Dịch bởi Vũ Đức Nguyên.