ระบบยืนยัน email เมื่อสมัครสมาชิกใน laravel 6

ระบบส่ง email เมื่อสมัครสมาชิกใน laravel 6

ระบบสมัครสมาชิกในเว็บทั่วไปนั้นหลายๆครั้งจำเป็นต้องยืนยัน email ก่อนที่จะเข้าสู่ระบบซึ่งทริควันนี้เราจะมาดูวิธีการทำระบบยืนยัน email โดยใช้ mailtrap.io หรือใครจะใช้ Email service ส่งจริงๆก็ได้ โดยสามารถ สมัคร Sendinblue บริการ email service

1. สร้าง project ด้วยคำสั่ง

laravel new emailProject && cd emailProject

หลังจากเข้ามาใน Folder emailProject ให้ทำการติดตั้ง package laravel/ui ผ่าน composer ด้วยคำสั่ง

composer require laravel/ui --dev && php artisan ui vue --auth

2. Implement Class MustVerifyEmail ใน User Model

ให้เราเข้าไปที่ App\User.php และเพิ่ม code ในบรรทัดที่ 5 และ 9 ซึ่ง class ที่เราจะนำมา implements คือ MustVerifyEmail

<?php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;

    // ...
}

หลังจากนั้นรันคำสั่ง migrate เพื่อสร้าง database ที่เกี่ยวข้อง

php artisan migrate

3. แก้ไข Route ในไฟล์ web.php

ให้เราเข้าไปที่ Folder routes/web.php จากนั้นทำการเพิ่ม code ดังนี้

Auth::routes(['verify' => true]);
// ถ้าใครที่มี Auth::routes() อยู่แล้วให้เพิ่ม array เข้าไปแทน
['verify' => true]

4. ตั้งค่า Email smtp ใน Laravel สำหรับส่ง email

ในขั้นตอนนี้ต้องขออนุญาตใช้ smtp ที่เป็น fake smtp สำหรับทดลองส่งเมลด้วย Mailtrap.io หรือใครจะใช้ smtp ของ sendinblue เพื่อส่งเมลของจริงก็ได้ วิธีการการใช้งาน Mailtrap ผมจะขอมาเขียนโดยละเอียดทีหลังนะครับยังไงลองสมัครสมาชิกและเข้าไปในหน้า dashboard เราจะเจอหน้าตาแบบนี้

หน้า dashboard ของ mailtrap
dashboard mailtrap

ให้เข้าไปที่ Demo Inbox จากนั้นเราจะเจอหน้าตาแบบนี้ ในส่วนของลูกศรสีแดงให้เลือกเป็น laravel

หน้า mail box ของ mailtrap พร้อมรหัสสำหรับตั้งค่า email
SMTP ของ mailtrap

ให้เราทำการ copy config ในกล่องแรกมาเนื่องจากเป็น config ของไฟล์ .env จะได้หน้าตาแบบนี้ ให้ในไปใส่ในไฟล์ .env ของ project เราได้เลย

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=d7ad5be95c6c22
MAIL_PASSWORD=81cf9dd3495d8b
[email protected]
MAIL_FROM_NAME=Example
// เราสามารถเปลี่ยน MAIL_FROM_ADDRESS และ MAIL_FROM_NAME ได้ถ้าต้องการ เช่น
[email protected]
MAIL_FROM_NAME="เว็บไซต์ทดสอบ"

5. ตั้งค่า redirect เมื่อกดลิงก์ใน email

ในขั้นตอนนี้เราสามารถลองสมัครเว็บของเราได้ทันทีเราจะได้รับเมลที่ส่งไปยัง mailtrap.io ให้เราเปิดหน้า dashboard ค้างไว้เลยครับจะได้รับเมลแล้วให้ลองกดลิงก์จากในเมลเพื่อกลับมาเว็บเราได้เลย หลังจากที่ระบบยืนยันแล้วเราสามารถตั้งค่าได้ว่าจะส่งไปที่ path ไหนของเว็บไซต์โดยการตั้งค่าที่ไฟล์ app\VerificationController.php โดยตั้งค่าตัวแปร $redirect ได้ดังนี้

protected $redirectTo = '/dashboard';

สรุป

เท่านี้เราก็จะได้ระบบ Email Verification เรียบร้อยแล้ว ยังไงก็ฝากติดตาม page เพื่ออัพเดทข่าวสาร Laravel กันด้วยนะครับ

บทความที่เกี่ยวข้อง

เกี่ยวกับผู้เขียน

ITTHIPAT

สวัสดีครับผม อิทธิพัทธ์ (เป้) ชอบหาเทคนิคต่างๆที่ทำให้ชีวิต Programmer ง่ายขึ้น ทั้ง Automate, Library ชอบทำ Blog และ Video ถ้ามีเวลานะ!

ขอบคุณทุกคนที่ติดตาม และอ่านบทความของผมครับ ผมหวังว่าความรู้ที่เขียนขึ้นในเว็บไซต์นี้จะช่วยทุกท่านได้ไม่มากก็น้อย 

Scroll to Top