Cấu hình gửi email trong laravel

Trong 1 product, tạo 1 chức năng tự động gửi email đến tay khách hàng là điều cần thiết. Vậy làm thế nào để tạo 1 chức năng gửi email cho khách hàng trên chính website của mình. Bài viết này mình sẽ hướng dẫn các bạn cấu hình email trong laravel framework.

B1: Bật xác minh 2 bước và tạo mật khẩu ứng dụng cho tài khoản email

  • Truy cập vào Tài khoản google
  • Chọn Bảo Mật
  • Chọn Xác minh 2 bước
  • Hoàn thành xác minh bằng số điện tạo
  • Chọn Mật khẩu ứng dụng

Sau khi hoàn thành các bước trên bạn sẽ nhận được mật khẩu ứng dụng bao gồm 16 chữ cái, đây là phần rất cần thiết để cấu hình email trong Laravel Framework.

B2: Cấu hình file .ENV

Tìm dòng tương ứng và sửa lại nhé. nếu không có thì bạn ghi thêm vào là được. .env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your@gmail.com
MAIL_PASSWORD=apppassword
MAIL_ENCRYPTION=tls

Với gmail thì ta sẽ sử dụng phương thức gửi mail là smtp, host của gmail là smtp.gmail.com, cổng để kết nối đến gmail là 587 và lưu ý MAIL_USERNAME chính là gmail của bạn và bạn cần phải thay your@gmail.com = gmail của bạn nhé không là tòi đấy. MAIL_PASSWORD chính là mật khẩu ứng dụng mà bạn vừa tạo ở bước 1.

Cấu hình email trong laravel

Cấu hình email trong laravel

B3: Tạo form liên hệ

Nếu bạn đã có sẵn form liên hệ thì bạn có thể sử dụng form liên hệ của chính bạn, nếu đây chỉ là 1 dự án mẫu thì bạn có thể sao chép theo code của mình

<form action="{{ route('form.fb') }}" method="post">
    <div>
        <label  class="email">Your name</label>
        <input type="text" name="name" placeholder="Input your name" />
    </div>
    <div>
        <label  class="email">Your email</label>
        <input type="text" name="email" placeholder="Input your email" />
    </div>
    <div>
        <label class="email">Comments</label>
        <textarea name="comment" placeholder="Comment here"></textarea>
    </div>
    <div class="send">
         <button type="submit">Send</button>
    </div>
</form>

Sau khi tạo form, chúng ta tiến hành thêm route cho form này ở file routes/web.php, ở đây mình tạo route ‘contact’

Route::get('contact', [
	'uses' => 'IndexController@index',
	'as' => 'front.fb'
]);

B4: Xử lý controller

Giờ chúng ta vào app/Http/Controller và xem. Nếu đã có IndexController.php chúng ta sẽ viết ở file này, nếu chưa có file IndexController.php chúng ta sẽ tạo controller bằng cách mở terminal cho project và chạy lệnh

php artisan make:controller IndexController

Tiếp theo chúng ta sẽ custom IndexController như sau:

lệnh

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
class IndexController extends Controller
{
    public function index(Request $request)
    {
        $input = $request->all();
        Mail::send('mailfb', array('name'=>$input["name"],'email'=>$input["email"], 'content'=>$input['comment']), function($message){
	        $message->to('plachym.it@gmail.com', 'Visitor')->subject('Visitor Feedback!');
	    });

        return redirect()->route('form.fb')->with('flash_message', 'Send message successfully!');
    }

}

Nhìn vào code phía trên chúng ta có thể hiểu như sao

Request: dùng để lấy giá trị trong form khi post lên server.

Mail: dùng để gửi email trong Laravel.

mailfb: Route của giao diện email chúng ta cần gửi, có thể chỉnh css theo ý muốn

->to: Mail sẽ nhận được email chúng ta gửi.

->subject: Tiêu đề email.

return: điều hướng về route form ban đầu chúng ta tạo với tin nhắn ‘Send message successfully’.

Sau đó chúng ta tạo file mailfb.blade.php ở trong folder /app/resource/view/ rồi thêm nội dung sau

Sau khi tạo form, chúng ta tiến hành thêm route cho form này ở file routes/web.php, ở đây mình tạo route ‘contact’

{{$name}}
{{$email}}
{{$content}}

Trên đây là 4 bước để cấu hình email trong laravel, bạn chỉ cần cấu hình 1 lần là có thể sử dụng ở mọi nơi trong project của bạn. Chúc các bạn thành công

Bài viết liên quan:

Hướng dẫn thuật toán sắp xếp Merge Sort trong lập trình C++