Mail trong Laravel 7

Giới thiệu

Laravel 7 đã tích hợp sẵn thư viện mã nguồn mở SwiftMailer để gửi mail cho bạn, nhờ đó bạn có thể gửi mail đến người dùng theo nhiều cách (driver) khác nhau như SMTP, Mailgun, Postmark, Amazon SES và sendmail.

Cấu hình

Cấu hình gửi email trong Laravel sẽ thực hiện trong 3 file:  config/mail.php, .envconfig/service.php.  Mỗi driver bạn chọn sẽ có các cấu hình khác nhau.

Trong Laravel, bạn có thể gửi các transaction mail (mail giao dịch)  như Postmark hoặc các mail với số lượng lớn (mattketing, thông báo khách hàng) như Amazon SES…

Các driver dựa trên API như Mailgun , Postmark thường đơn giản và nhanh hơn SMTP server. Nếu có thể thì bạn nên dùng các driver này. Tất cả các API drivers đều yêu cầu phải có thêm thư viện Guzzle HTTP, cho nên bạn cần cài nó vào project của mình:

composer require guzzlehttp/guzzle

Cấu hình dùng Mailgun

Để dùng driver Mailgun:

  1. Cài Guzzle vào (xem lệnh trên)
  2. Mở file config/mail.php  đó sửa cấu hình default  là mailgun
  3. Mở file config/services.php cấu hình 2 thông số sau:
'mailgun' => [
    'domain' => 'your-mailgun-domain',
    'secret' => 'your-mailgun-key',
],
  • Đăng ký tài khoản trên https://mailgun.com   để có domain và key trong mailgun  (nếu chưa đăng ký)

Cấu hình dùng Postmark

Để dùng Postmark:

  1. Cài thêm thư viện wildbit/swiftmailer-postmark:
        composer require wildbit/swiftmailer-postmark
  • Cài Guzzle nếu chưa cài
  • Mở file config/mail.php  và cấu hình default là postmark.
  • Mở file config/services.php và khai báo:
'postmark' => [
    'token' => 'your-postmark-token',
],

Cấu hình dùng Amazon SES

Amazon SES (Amazon Simple Email Service) là một dịch vụ gửi nhận mail đơn giản, linh hoạt. Để dùng Amazon SES :

  • Cài Amazon AWS SDK for PHP: Mở file composer.json trong folder project của bạn, trong mục require thêm code như bên dưới :
        "aws/aws-sdk-php": "~3.0"

Xong thì vào command line, chuyển vào folder project và chạy lệnh:

composer update 
  • Mở file config/mail.php   và cấu hình default là ses 
  • Mở file config/services.php thêm cấu hình sau:
'ses' => [
    'key' => 'your-ses-key',
    'secret' => 'your-ses-secret',
    'region' => 'ses-region',  // e.g. us-east-1
],