Bài viết này mình sẽ hướng dẫn các bạn gửi email trong Laravel 5.4 sử dụng hàm gửi Mailgun.

1. Mailgun là gì ?

Mailgun là một tập hợp các API mạnh mẽ, cho phép bạn gửi email, nhận email, theo dõi email một cách dễ dàng.

Mailgun được tích hợp vào Laravel 5.4 thông qua các driver, do đó bạn có thể gửi email trong Laravel 5.4 một cách rất đơn giản mà không cần phải cấu hình nhiều.

2. Hướng dẫn đăng ký tài khoản Mailgun

Đầu tiên, bạn vào trang chủ của Mailgun tại địa chỉ : https://www.mailgun.com/

Tiếp đến ấn vào nút Sign up ở góc phải để tiến hành đăng ký tài khoản Mailgun.

Đăng ký tài khoản Mailgun

  • Company/Acount name : Bạn điền vào một tên bất kì nào đó cũng được (điền không dấu)
  • Your name : Điền tên bạn vào (điền không dấu)
  • Work email : Điền địa chỉ email của bạn
  • Password : Điền mật khẩu đăng nhập mailgun
  • Confirm password : Nhập lại mật khẩu đăng nhập
  • Mục này Add payment info now (optional) các bạn cứ để trống, đừng tick vào nếu bạn chưa muốn nhập thông tin thanh toán vào.

Sau đó tick vào mục Tôi không phải là người máy, rồi ấn nút Create Account.

Thông tin đăng ký mailgun

Sau khi ấn nút Create Account, một email xác nhận sẽ được gửi đến địa chỉ email của bạn. Bạn cần vào đó và ấn vào nút Activate Mailgun Account như hình để xác nhận địa chỉ email.

Xác nhận email Mailgun
Xác nhận email Mailgun

Sau khi ấn vào nút để xác nhận, tiếp đến bạn cần điền số điện thoại của bạn vào rồi ấn nút Send Verification Code để nhận mã kích hoạt như hình

xác nhận số điện thoại mailgun
Xác nhận số điện thoại Mailgun
Nhập mã code gửi đến điện thoại rồi ấn nút Validate
Nhập mã code gửi đến điện thoại rồi ấn nút Validate

Sau khi đã đăng ký thành công và được chuyển đến trang quản trị Mailgun. Các bạn vào mục Domains, copy Domain Name, và lưu lại ở 1 chỗ nào đó để sử dụng ở các phần sau

Domain mailgun
Lưu lại địa chỉ domain

Tiếp đến, ở góc phải trên trang Mailgun, bạn ấn vào link địa chỉ email của bạn rồi chọn Account Settings

Account Settings

Tiếp đến ấn vào tab API keys bạn sẽ thấy thông tin Active API Key của mình

API key MAilgun

Mặc định thì nó ẩn đi, bạn ấn vào biểu tượng con mắt để hiện ra, bạn copy và lưu lại API key này để dùng cho phần sau.

Như vậy là bạn đã đăng ký thành công tài khoản Mailgun và lấy các thông tin cần thiết. Phần tiếp theo bạn có thể sử dụng Mailgun để gửi Email trong Laravel 5.4 được rồi.

3. Cài đặt GuzzleHttp

Tiếp đến, bạn cần cài thêm thư viện GuzzleHttp vào mới có thể gửi email trong Laravel 5.4 được. Việc tiến hành cài GuzzleHttp thì cũng đơn giản, tại thư mục gốc của source code Laravel, bạn mở CMD lên và gõ lệnh sau để tiến hành cài đặt GuzzleHttp vào

Cài đặt GuzzleHttp

4. Tiến hành gửi email trong Laravel 5.4

Sau khi đã cài đặt GuzzleHttp và có đẩy đủ thông tin bao gồm : Domain nameMailgun API Key, bây giờ mình sẽ hướng dẫn sử dụng thông tin này để gửi email trong laravel 5.4

a. Cấu hình file .env

Các bạn mở file .env lên và thêm một số hằng số sau vào cuối file

b. Cấu hình file mail.php

Tiếp đến mở file mail.php ở đường dẫn config/mail.php và sửa chỗ driver thành mailgun như sau

Kéo xuống dưới một tí, chỗ mục from bạn điền như sau

  • MAIL_FROM_ADDRESS : Bạn điền vào 1 địa chỉ email bất kỳ (ví dụ điện abc@gmail.com vẫn được nhé, cái này chỉ là định danh mà thôi) ví dụ ở đây mình điền là admin@kungfuphp.com
  • MAIL_FROM_NAME : Thì điền tên bạn vào, ví dụ ở đây mình điền là Hoang Hieu

c. Cấu hình file service.php

Tiếp đến, mở file config/service.php lên và thêm đoạn này vào rồi lưu lại

d. Tạo file UserEmail.php

Sau đó, bạn mở tại thư mục gốc của source Laravel, bạn mở CMD lên và gõ lệnh sau

Sau khi gõ lệnh trên, bạn vào đường dẫn app/Mail sẽ thấy file UserEmail.php đã được tạo ra và có nội dung như sau

Các bạn để ý hàm build(), đây là hàm dùng để gọi ra view chứ nội dung email của bạn. Bạn sửa chỗ view.name thành view của bạn, chẳng hạn ở đây mình sẽ sửa thành emails.sendemail

e. Tạo view sendemail.blade.php

Tiếp đến, mình sẽ tao các bạn cần tạo view sendemail để chứa nội dung email của chúng ta. Tại đường dẫn resources/views, bạn tạo 1 folder đặt tên là emails, bên trong folder emails này bạn tạo 1 file đặt tên là sendemail.blade.php như sau

Tạo view gửi email

File sendemail.blade.php, bạn thêm vào nội dung như sau

f. Tạo file controller EmailController.php

Tiếp đến, trong thư mục App/Http/Controllers, bạn tạo 1 file mới đặt tên là EmailController.php có nội dung như sau:

g. Tạo route gửi email

Bạn mở file web.php nằm trong thư mục routes và thêm vào đoạn route sau

h. Tiến hành chạy thử

Tiếp đến bạn vào đường dẫn

(với website_folder chính là tên folder chứa source code Laravel 5.4 của bạn).

Nếu không có thông báo lỗi hiện ra tức là bạn đã gửi email thành công, ngược lại nếu bạn thấy lỗi, thì bạn vào đường dẫn sau https://curl.haxx.se/ca/cacert.pem

Copy hết toàn bộ nội dung và lưu vào một file đặt tên là cacert.pem, file này bạn sẽ đặt vào đường dẫn sau

Ở trên là đường dẫn của wamp của mình, bạn cứ đặt lại tương ứng theo đường dẫn wamp của bạn.

Tiếp đến các bạn mở file php.ini ở đường dẫn

Tìm đến chỗ url.cainfo, mở extension này ra, rồi sửa lại như sau

Save file php.ini lại, restart lại Wamp. Rồi chạy lại đường dẫn

Bạn sẽ thấy một email có nội dung là

gửi đến email của bạn (Bạn có thể tìm thấy email này trong folder Spam)

Tổng kết

Bài viết hướng dẫn gửi email trong Laravel 5.4 khá dài, cơ bản nó không khó nhưng hơi nhiều bước đâm ra bạn sẽ thấy nó phức tạp. Cứ làm theo các bước của mình là bán sẽ gửi email trong Laravel 5.4 thành công nhé.

Có bất kỳ thắc mắc nào thì để lại bình luận bên dưới bài viết, mình sẽ phản hồi sớm nhất có thể.

Gợi ý xem : Khóa học tạo website hoàn chỉnh với Laravel 5 tặng mã giảm giá 40% + Hỗ trợ việc làm sau khi học xong

Chúc các bạn học tốt !


Nếu bạn thấy bài viết có ích và muốn cảm ơn mình thì bạn có thể donate mời mình 1 lý cà phê nhé
Địa chỉ ví BTC của mình : 1NWVkBYnd5iSZ5BsAg4fbr4bYWC7hn9Vcz
Địa chỉ ví ETH của mình : 0xa4881fe9ed28b270a7a7F6D339fe0B73c35DBAd1
Cám ơn và chúc bạn nhiều niềm vui trong cuộc sống !