Ứng dụng gửi mail được áp dụng rất nhiều trong các project, phần này mình hướng dẫn cơ bản về cách làm, vì mỗi ứng dụng có cách lấy dữ liệu khác nhau.
ưu điểm cách làm này, chờ post một bài rất chậm vì quá trình xử lý gửi mail. Sang phần 2 mình sẽ hướng dẫn cách xử lý gửi mail qua Queue.
Chú ý:
Chắc chắn gmail của bạn đã tắt xác minh 2 bước
Bạn có thể kiểm tra lại theo cách sau:
Vào Cài đặt (setting) của mail, chọn Thay đổi Tùy chọn và khôi phục mật khẩu
Tắt xác minh 2 bước như hình dưới.
OK, như vậy là cài đặt và xử lý phần gmail đã xong.
Giờ chúng ta bắt đầu vào ứng dụng.
Tạo view có tên là SendMailCreateThreadToSuccess.blade.php
Chuột phải vào thư mục project để mở Terminal và gõ lệnh sau:
Mở file app\mail\SendMailThreadToSuccess.php và cấu hình thêm
- use App\User: là Model của User truyền vào để lấy thông tin user cụ thể là mail
- use App\Thread: Model của Thread
Hàm __construct là hàm khởi tạo được truyền hai tham số User và thread
Hàm Build trả về view vừa tạo ở trên đó cũng chính là nội dung email gửi về cho tác giả tạo thành công thread.
Xem trên hình ảnh:
Trong controller:
Nhận request, tạo thread và gửi mail thông báo khi tạo thành công.
Xử lý ở hàm store như sau:
Xem trên hình ảnh:
Mình chụp cả phần đầu để các bạn đừng quên thêm use Mail và use App\Mail\SendMailCreateThreadToSuccess;
Cuối cùng là xử lý hàm store
Ở đây, trong ứng dụng của các bạn chỉ chú ý đoạn
=> Như vậy là xong.
Giờ chúng ta thử tạo thread nhé!
Kết quả trả về mail
Cách gửi mail trong laravel 5.8 bằng SMTP của gmail đã thành công. Tuy nhiên, khi làm thành công các bạn sẽ thấy, khi nhấn publish sẽ phải đợi 3-4s để gửi mail thành công mới trả về thành công.
Phần 2 mình sẽ hướng dẫn cách gửi mail sử dụng hàng đợi mà hiện nay đang được sử dụng rất phổ biến.
Nếu có thắc mắc các bạn đừng ngại gửi comment phía dưới nhé!
Thông tin
- Phiên bản laravel 5.8
- Ứng dụng diễn đàn cơ bản gửi mail thông báo lại khi tạo thread thành công.
- Sử dụng Resource Controller
- Gửi mail bằng SMTP gmail
Cách làm
- Cấu hình trong file .env
MAIL_DRIVER=smtpMAIL_HOST=smtp.gmail.comMAIL_PORT=587MAIL_USERNAME= Dia_chi_gmailMAIL_PASSWORD= Mat_khau_gmailMAIL_ENCRYPTION=tls
Chú ý:
Chắc chắn gmail của bạn đã tắt xác minh 2 bước
Bạn có thể kiểm tra lại theo cách sau:
- Bật xác minh 2 bước.
- Tắt xác minh 2 bước.
- Đăng nhập bằng xác minh 2 bước.
- Khóa bảo mật.
- Cài đặt Google Authenticator
- Thêm hoặc xóa máy tính đáng tin cậy.
- Xóa mật khẩu ứng dụng.
- Sử dụng điện thoại mới để nhận mã xác minh 2 bước.
Vào Cài đặt (setting) của mail, chọn Thay đổi Tùy chọn và khôi phục mật khẩu
Tắt xác minh 2 bước như hình dưới.
OK, như vậy là cài đặt và xử lý phần gmail đã xong.
Giờ chúng ta bắt đầu vào ứng dụng.
Tạo view có tên là SendMailCreateThreadToSuccess.blade.php
<h2>Thank you for Post Thread on Forum Us!</h2><p>Title : <b>{{ $thread->title }}</b></p><p>Link : <b>http://ictsharing.com/{{ $thread->path() }} </b></p><h3>Thanks</h3>
Chuột phải vào thư mục project để mở Terminal và gõ lệnh sau:
$ php artisan make:mail SendMailCreateThreadToSuccessSau khi tạo xong, file SendMailCreateThreadToSuccess.php sẽ nằm trong thư mục App\Mail như hình bên dưới.
Mở file app\mail\SendMailThreadToSuccess.php và cấu hình thêm
Trong đó:<?phpnamespace App\Mail;use Illuminate\Bus\Queueable;use Illuminate\Mail\Mailable;use Illuminate\Queue\SerializesModels;use Illuminate\Contracts\Queue\ShouldQueue;use App\User;use App\Thread;class SendMailCreateThreadToSuccess extends Mailable{use Queueable, SerializesModels;public $user;public $thread;/*** Create a new message instance.** @return void*/public function __construct(User $user, Thread $thread){$this->user = $user;$this->thread = $thread;}/*** Build the message.** @return $this*/public function build(){return $this->view('threads.sendMailCreateThreadToSuccess');}}
- use App\User: là Model của User truyền vào để lấy thông tin user cụ thể là mail
- use App\Thread: Model của Thread
Hàm __construct là hàm khởi tạo được truyền hai tham số User và thread
Hàm Build trả về view vừa tạo ở trên đó cũng chính là nội dung email gửi về cho tác giả tạo thành công thread.
Xem trên hình ảnh:
Trong controller:
Nhận request, tạo thread và gửi mail thông báo khi tạo thành công.
Xử lý ở hàm store như sau:
public function store(Request $request, User $user)
{
$this->validate($request, [
'title' => 'required',
'body' => 'required',
'channel_id' => 'required|exists:channels,id'
]);
$thread = Thread::create([
'user_id' => auth()->id(),
'channel_id' => request('channel_id'),
'title' => request('title'),
'body' => request('body')
]);
// send mail to creator thread
Mail::to($request->user(), $thread)->send(new SendMailCreateThreadToSuccess($user, $thread));
return redirect($thread->path())
->with('flash', 'Your thread has been published');
}
Xem trên hình ảnh:
Mình chụp cả phần đầu để các bạn đừng quên thêm use Mail và use App\Mail\SendMailCreateThreadToSuccess;
Cuối cùng là xử lý hàm store
Ở đây, trong ứng dụng của các bạn chỉ chú ý đoạn
Đoạn này để gửi mail cho người tạo thread và truyền thông tin thread vào view gửi về mail.// send mail to creator threadMail::to($request->user(), $thread)->send(new SendMailCreateThreadToSuccess($user, $thread));
=> Như vậy là xong.
Giờ chúng ta thử tạo thread nhé!
Kết quả trả về mail
Cách gửi mail trong laravel 5.8 bằng SMTP của gmail đã thành công. Tuy nhiên, khi làm thành công các bạn sẽ thấy, khi nhấn publish sẽ phải đợi 3-4s để gửi mail thành công mới trả về thành công.
Phần 2 mình sẽ hướng dẫn cách gửi mail sử dụng hàng đợi mà hiện nay đang được sử dụng rất phổ biến.
Nếu có thắc mắc các bạn đừng ngại gửi comment phía dưới nhé!
Không có nhận xét nào:
Đăng nhận xét