ระบบสมัครสมาชิกในเว็บทั่วไปนั้นหลายๆครั้งจำเป็นต้องยืนยัน 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 Thitsarak

สวัสดีครับผม อิทธิพัทธ์ (เป้) เป็น Freelance Web developer ชอบหาเทคนิคต่างๆที่ทำให้ชีวิต Programmer ง่ายขึ้นโดย Blog นี้จะ สอน Laravel, Vuejs, CSS, HTML 5 และอื่นๆ ที่เกี่ยวกับการทำเว็บไซต์

ขอบคุณทุกคนที่ติดตาม และอ่านบทความของผมครับ หากใครมีคำถามหรืออยากให้ผมเขียนเกี่ยวกับเรื่องอะไรเพิ่มเติม สามารถแสดงความคิดเห็นไว้ที่ใต้บทความ หรือส่งเรื่องเข้ามาที่ Email ได้เลยครับ หัวข้อไหนน่าสนใจ ผมจะหยิบมาเขียนบทความให้ได้อ่านกันเรื่อยๆครับ

Scroll to Top
Scroll to Top