Aydnn Öncelikle bu gibi işlemlerde kullanıcıyı bekletmemek için queue
kullanmanızı tavsiye ediyorum.
php artisan make:mail EmployeeMail
komutu ile mail oluşturuyoruz. php artisan make:job EmployeeJob
komutu ile job oluşturulduktan sonra gelecek değerleri __construct
içerisinde alıyoruz.
protected $data;
public function __construct(array $data)
{
$this->data = $data;
}
public function handle()
{
Mail::to($this->data['email'])->send(new EmployeeMail($this->data['name']));
}
Sonrasında ise üstte başlattığımız EmployeeMail
içerisinde göndereceğimiz verileri atıyoruz.
public $data;
public function __construct($data)
{
$this->data = $data;
}
public function build()
{
return $this->subject('Mail subject')
->view('mail template', ['data' => $this->data]); //->markdown() da kullanılabilir
}
Bu işlemi tetiklemek için de
dispatch(new EmployeeJob(['email' => 'test@example.com', 'name' => 'John Doe']))
kullanıyoruz. Mail gönderme işlemi kuyruğa düşmüş oluyor ve kuyruğu işleme almak için php artisan queue:work
komutunu ana dizinde çalıştırıyoruz. Direk olarak mail göndermek için de yeni Mail oluşturup içerisinde veriyi alabilirsiniz.