Dalam contoh ini kita akan melihat bagaimana mengirim email menggunakan antrian di laravel 8.
Queue Laravel digunakan untuk mengirim email massal dengan proses latar belakang, seperti yang kita ketahui jika kita mengirim surat tunggal dalam aplikasi laravel itu berfungsi dengan baik tanpa memakan waktu lebih lama tetapi jika Anda ingin mengirim banyak email di laravel maka itu akan memakan waktu terlalu lama dan Anda juga tidak dapat melakukan operasi apa pun selama periode waktu ini.
Jadi, jika Anda ingin mengirim email massal maka Anda perlu menggunakan Queue laravel menggunakan Queue kita bisa mengirim banyak email di laravel dengan proses latar belakang. mari kita mulai dan ikuti langkah-langkah di bawah ini untuk cara mengirim email massal di laravel.
Langkah 1: Ubah File .env
Kita perlu mengubah konfigurasi queue yang diatur dalam file .env seperti di bawah ini, di sini kita telah menggunakan mailtrap.io.
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_passowrd
MAIL_ENCRYPTION=TLS
QUEUE_DRIVER=database
Langkah 2: Buat Route
Pada langkah ini kita akan membuat route untuk mengirim email massal menggunakan queue.
use App\Http\Controllers\SendMailController;
Route::get('send/mail', [SendMailController::class, 'send_mail'])->name('send_mail');
Langkah 3: Buat Tabel Queue
Sekarang, kita akan membuat tabel 'jobs' di database, jadi salin perintah di bawah ini dan jalankan di terminal Anda.
php artisan queue:table
php artisan migrate
Langkah 4 : Buat Controller
Pada langkah ini kita akan membuat SendMailController dan menambahkan kode di bawah ini.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SendMailController extends Controller
{
public function send_mail(Request $request)
{
$details = [
'subject' => 'Test Notification'
];
$job = (new \App\Jobs\SendQueueEmail($details))
->delay(now()->addSeconds(2));
dispatch($job);
echo "Mail send successfully !!";
}
}
Langkah 5: Buat Job
Sekarang, kita perlu membuat SendQueueEmail.php file di app\Jobs folder menggunakan perintah di bawah ini di terminal Anda dan salin kode di bawah ini.
php artisan make:job SendQueueEmail
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\User;
use Mail;
class SendQueueEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $details;
public $timeout = 7200; // 2 hours
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($details)
{
$this->details = $details;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$data = User::all();
$input['subject'] = $this->details['subject'];
foreach ($data as $key => $value) {
$input['email'] = $value->email;
$input['name'] = $value->name;
\Mail::send('mail.Test_mail', [], function($message) use($input){
$message->to($input['email'], $input['name'])
->subject($input['subject']);
});
}
}
}
Langkah 6: Buat Mail Blade
Pada langkah ini, kita akan membuat file mail blade di resources/views/mail/Test_mail.blade.php dan menulis tambahkan konten email di bawah ini.
Hi <br/>
This is Test Mail.<br />
Thank you !!
Dan jalankan perintah di bawah ini di terminal Anda untuk mengirim surat secara manual.
php artisan queue:listen
send email massal laravel send email laravel laravel laravel queue example