Gửi email bằng Gmail và SendGrid trên Laravel 5

Laravel cung cấp cho chúng ta nhiều phương thức để gửi email. Bạn có thể sử dụng mail server trên host/vps/server của bạn để gửi mail, hoặc sử dụng các dịch vụ gửi mail bên ngoài như Mailgun, Sendgrid, Mandrill, Amazon SES, v.v…

Để gửi email trên Laravel, trước tiên hãy tùy chỉnh file config/mail.php

1/ Gửi email bằng Gmail

Đầu tiên bạn truy cập vào https://myaccount.google.com/security#connectedapps sau đó thiết lập tùy chỉnh tại Sign-in & security -> Connected apps & sites -> Allow less secure apps. Bạn chỉnh Allow less secure apps thành ON => điều này sẽ cho phép bạn sử dụng ứng dụng không phải của Google đăng nhập vào Gmail của bạn để gửi email.

Tiếp đến bạn cần chỉnh các thông số gửi mail tại file .env

Trong đó yourEmail là Gmail của bạn, và yourPassword là mật khẩu Gmail của bạn.

*** Nếu bạn gặp phải lỗi sau khi gửi mail “Failed to authenticate on SMTP server with username “youremail@gmail.com” using 3 possible authenticators” thì bạn hãy thử 1 trong các cách sau:

– Truy cập vào https://accounts.google.com/UnlockCaptcha và click vào continue and unlock your account for access through other media/sites
– Sử dụng mật khẩu với 2 dấu nháy kép “your password”
– Sử dụng Gmail username không có đuôi @gmail.com

2/ Gửi email bằng SendGrid

Đầu tiên bạn cần đăng ký 1 tài khoản tại https://sendgrid.com

Sau khi lấy được thông tin SMTP từ SendGrid, bạn tiến hành chỉnh sửa file .env

3/ Viết code để kiểm tra việc gửi email

Cuối cùng, bạn cần viết code gửi email để kiểm tra xem code của bạn đã hoạt động chính xác chưa. Để làm việc này, bạn thêm vào file routes.php đoạn sau

Như bạn thấy, chúng ta sử dụng method send của Mail facade với 3 tham số

– Tên của view mà chúng ta sẽ sử dụng để gửi mail
– Mảng $data để truyền biến vào view
– Closure function (hàm closure) để bạn tùy chỉnh các thông số như tiêu đề email, email gửi, email nhận …

Bạn cần tạo file views/emails/welcome.blade.php để Laravel sử dụng file này như nội dung của email

Sau cùng, bạn thử truy cập vào http://domain/sendemail để kiểm tra (trong đó domain là tên miền của bạn), nếu bạn thấy kết quả trả về trên trình duyệt là đoạn text “Gửi email thành công!!!” => điều đó nghĩa là bạn đã cấu hình email thành công, hoặc bạn có thể kiểm tra email được gửi đến để chắc chắn hơn.