برای ارسال ایمیل حاوی لینک تایید در زمان ثبت نام کاربر تغییراتی را در مدل User باید انجام بدید و یکسری از موارد دیگر رو نیز لازم است تا انجام بدید.

وارد مدل User خود شوید و متد زیر را به آن اضافه نمائید :

public function sendEmailVerificationNotification()
{
dispatch(new SendVerificationEmailJob($this));
}

 

البته توجه کنید قبلش یک job برای ارسال ایمیل تاییدیه ایجاد کنید که من ایجاد کردم و اسمشو گذاشتم SendVerificationEmailJob  و سپس وارد job مربوطه شوید و متد handle این کلاس رو به شکل زیر تغییر بدید :

public function handle()
{
$this->user->notify(new VerifyEmailQueued($this->user));
}

 

در اینجا هم میبینید که یک نوتیفیکیشن از قبل ایجاد کردیم و فراخوانی اش هم اینجا انجام دادیم که بهش یوزر فعلی رو هم پاس میدیم.

محتویات داخل فایل job به شکل زیر خواهد بود :

<?php

 

namespace App\Jobs;

 

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Mail;
use App\Mail\ConfirmEmail;
use App\Notifications\VerifyEmailQueued;

 

class SendVerificationEmailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

 

protected $user;

 

public function __construct($user)
{
$this->user = $user;
}

 

public function handle()
{
$this->user->notify(new VerifyEmailQueued($this->user));
}
}

 

حالا وارد فایل نوتیفیکیشن میشیم و در کانستراکتور این کلاس مقدار متغییر  user رو دریافت میکنیم 

public function __construct($user)
{
$this->user = $user;
}

سپس متد toMail رو هم به صورت زیر بنویسید :

public function toMail($notifiable)
{
$temporarySignedURL = URL::temporarySignedRoute('verification.verify', \Carbon\Carbon::now()->addMinutes(60), ['id' => $notifiable->getKey()]);
return (new MailMessage)
->subject(sprintf("فعالسازی حساب کاربری"))
->action('فعالسازی حساب کاربری',$temporarySignedURL)
->line('Thank you for using our application!');
}