v-pack/laravel-vmail

Package untuk mengelola pengiriman email di Laravel.

1.0.0 2025-03-19 05:55 UTC

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) dari config/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! 🎉🚀