v-pack / laravel-vmail
Package untuk mengelola pengiriman email di Laravel.
Requires
- php: >=7.4
- illuminate/mail: >=8.0
- illuminate/support: >=8.0
This package is not auto-updated.
Last update: 2025-04-17 01:51:44 UTC
README
📌 Pengenalan
Laravel VMail adalah package untuk mengelola pengiriman email dengan mudah di Laravel. Package ini mendukung pengiriman email dengan queue, notifikasi Laravel, logging, serta template email yang fleksibel.
✨ Fitur Utama
✅ Pengiriman Email Sederhana
- Fungsi
send()
untuk mengirim email dengan parameter standar (penerima, subjek, template, data). - Mendukung lampiran (attachments).
- Konfigurasi pengirim default (
from
) dariconfig/vmail.php
.
✅ Support Queue untuk Email
- Bisa pilih antara langsung kirim atau masuk queue.
- Bisa menggunakan database, Redis, atau RabbitMQ untuk antrian email.
✅ Logging dan Monitoring Email
- Logging setiap email yang dikirim (status sukses/gagal).
- Bisa dikembangkan untuk tracking status email via webhook (Mailgun, SES, dll).
✅ Konfigurasi Fleksibel melalui config/vmail.php
- Support pengaturan default sender (from address, name).
- Bisa pakai driver SMTP, Mailgun, SES, dll.
- Support retry jika email gagal dikirim.
✅ Pembuatan Template Email dengan Blade
- Bisa menggunakan template email Laravel dengan Blade atau Markdown.
- Tersedia template default bawaan package.
📌 Instalasi
Tambahkan package ini ke dalam proyek Laravel Anda dengan perintah:
composer require v-pack/laravel-vmail
Publikasikan konfigurasi package:
php artisan vendor:publish --tag=vmail-config
Publikasikan default template package:
php artisan vendor:publish --tag=vmail-templates
📌 Konfigurasi Environment
Tambahkan konfigurasi berikut di file .env
:
MAIL_FROM_ADDRESS=your-email@example.com //sesuaikan
MAIL_FROM_NAME="Your Name" //sesuaikan
VMAIL_QUEUE_ENABLED=true //sesuaikan
QUEUE_CONNECTION=database //sesuaikan
📌 Penggunaan
1. Mengirim Email Biasa (Tanpa Queue)
use VPack\Vmail\VMail;
// Mengirim email langsung tanpa queue
VMail::send('user@example.com', 'Judul Email', 'emails.template', ['key' => 'value'], []);
2. Menggunakan Queue untuk Email
Pastikan queue sudah dikonfigurasi!
use VPack\Vmail\Jobs\SendEmailJob;
// Kirim email dengan queue
SendEmailJob::dispatch('user@example.com', 'Judul Email', 'emails.template', ['key' => 'value'], []);
3. Mengirim Email dengan Attachment (Tanpa Queue)
use VPack\Vmail\VMail;
VMail::send(
'user@example.com',
'Judul Email',
'emails.template',
['key' => 'value'],
[storage_path('app/public/sample.pdf')]
);
4. Menggunakan Queue dengan Attachment
use VPack\Vmail\Jobs\SendEmailJob;
SendEmailJob::dispatch(
'user@example.com',
'Judul Email',
'emails.template',
['key' => 'value'],
[storage_path('app/public/sample.pdf')]
);
📌 Contoh Menggunakan API untuk Mengirim Email (Tanpa Queue)
1. Edit API Controller
Tambahkan metode baru untuk mengirim email tanpa queue:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use VPack\Vmail\VMail;
class EmailController extends Controller
{
public function sendEmailWithoutQueue(Request $request)
{
$request->validate([
'email' => 'required|email',
'subject' => 'required|string',
'template' => 'required|string',
'data' => 'nullable|array',
'attachments' => 'nullable|array'
]);
VMail::send(
$request->email,
$request->subject,
$request->template,
$request->data ?? [],
$request->attachments ?? []
);
return response()->json(['message' => 'Email berhasil dikirim!'], 200);
}
}
2. Tambahkan Route API
Tambahkan route baru di routes/api.php
:
use App\Http\Controllers\EmailController;
Route::post('/send-email-no-queue', [EmailController::class, 'sendEmailWithoutQueue']);
3. Contoh cURL untuk API Tanpa Queue
curl -X POST "http://your-domain.com/api/send-email-no-queue" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"subject": "Judul Email Tanpa Queue",
"template": "emails.sample",
"data": {
"title": "Halo, Ini Email Tanpa Queue",
"message": "Terima kasih sudah menggunakan layanan kami."
},
"attachments": [
"/path/to/sample.pdf"
]
}'
📌 Contoh Menggunakan API untuk Mengirim Email (via Queue)
1. Contoh cURL untuk API dengan Queue
curl -X POST "http://your-domain.com/api/send-email" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"subject": "Judul Email dengan Queue",
"template": "emails.sample",
"data": {
"title": "Halo, Ini Email dengan Queue",
"message": "Terima kasih sudah menggunakan layanan kami."
},
"attachments": [
"/path/to/sample.pdf"
]
}'
2. Jalankan Queue Worker
Pastikan queue worker berjalan agar email dalam antrian dapat diproses:
php artisan queue:work
📌 Lisensi
Package ini dirilis di bawah lisensi MIT.
Author:
Miftach Noorvickia Mu'affaq
📧 miftach.works@gmail.com
✅ Kesimpulan
- Kirim email biasa dengan
VMail::send()
. - Gunakan queue dengan
SendEmailJob::dispatch()
. - Bisa integrasi API untuk kirim email via queue maupun tanpa queue.
- Konfigurasi queue di
.env
dan pastikan worker berjalan jika menggunakan queue. - Jalankan queue worker dengan
php artisan queue:work
jika menggunakan queue. - Email akan dikirim otomatis setelah masuk ke queue atau langsung dikirim tanpa queue!
Sekarang pengiriman email lebih fleksibel dan efisien dengan Laravel VMail! 🎉🚀