This is the error I get when I am trying to send an email with Laravel:
Illuminate\Mail\PendingMail::send(): Argument #1 ($mailable) must be of type Illuminate\Contracts\Mail\Mailable, App\Http\Livewire\Auth\ResetPassword given, called in /Users/andreiraileanu/Development/Protein/app/Http/Livewire/Auth/ResetPassword.php
So I have a livewire component where I reset the user password:
<?php
namespace App\Http\Livewire\Auth;
use Livewire\Component;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Mail;
use App\Models\User;
class ResetPassword extends Component
{
public $email;
public $phone;
protected $user;
protected $rules = [
'email' => 'required|email',
'phone' => 'required|digits:10',
];
public function submit()
{
$this->validate();
$this->user = User::where('email', $this->email)
->where('phone', $this->phone)
->first();
if ($this->user) {
\Debugbar::info('Identified User ID: '.$this->user->id);
$this->user->password = Str::random(8);
\Debugbar::info('New password is: '.$this->user->password);
$this->user->password = Hash::make($this->user->password);
$this->user->save();
\Debugbar::info('Password saved!');
Mail::to($this->user->email)->send(new ResetPassword($this->user));
} else {
$this->dispatchBrowserEvent('notify', ['content' => 'Adresa de email nu există sau numărul de telefon este incorect', 'type' => 'error']);
\Debugbar::error('Wrong email and/or phone number.');
}
}
public function render()
{
return view('livewire.auth.reset-password');
}
}
In this component I have a line where I try to email the new password like this Mail::to($this->user->email)->send(new ResetPassword($this->user)); but I get the error above.
This is what my Mailable looks like:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use App\Models\User;
class ResetPassword extends Mailable
{
use Queueable, SerializesModels;
protected $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function build()
{
return $this->subject('Order Shipped')
->view('emails.auth.reset-password');
}
}
What am I doing wrong? Never encountered this error before.