✨ feat(phpmailer): Update semua job LPJ ke PHPMailer dengan attachment support
🚀 Transformasi lengkap semua job email LPJ dari Laravel Mail ke PHPMailer dengan konfigurasi SMTP yang telah teruji! Perubahan utama: 1. **SendJadwalKunjunganEmailJob**: - ✅ Update dari SendJadwalKunjunganEmail ke SendJadwalKunjunganEmailPHPMailer - ✅ Tambahkan attachment support dengan parameter attachments - ✅ Implementasi error handling dengan logging - ✅ Konversi dari Mail::to() ke sendWithPHPMailer() 2. **SendPenawaranTenderJob**: - ✅ Update dari SendPenawaranTenderEmail ke SendPenawaranTenderEmailPHPMailer - ✅ Tambahkan attachment support dari penawaran['attachments'] - ✅ Implementasi proper constructor dengan 7 parameter - ✅ Error handling dengan Exception throwing 3. **SendPenawaranKJPPTenderJob**: - ✅ Update dari SendPenawaranKJPPEmail ke SendPenawaranKJPPEmailPHPMailer - ✅ Implementasi sendWithPHPMailer() untuk KJPP recipients - ✅ Tambahkan logging untuk tracking email delivery - ✅ Error handling dengan proper exception 4. **SendPenawaranTenderEmail**: - ✅ Konversi dari Mailable ke PHPMailerMailable - ✅ Implementasi sendWithPHPMailer() dengan konfigurasi SMTP - ✅ Tambahkan attachment support untuk array dan string format - ✅ SSL bypass configuration untuk menghindari certificate errors - ✅ Dual view support (testing vs production) 5. **SendPenawaranKJPPEmail**: - ✅ Konversi dari Mailable ke PHPMailerMailable - ✅ Implementasi sendWithPHPMailer() dengan PHPMailerService - ✅ Support untuk dp1 parameter tambahan - ✅ Dual mode: testing (array data) vs production (object data) - ✅ Attachment support lengkap 6. **SendPenawaranTenderEmailPHPMailer**: - ✅ Email class baru khusus untuk PHPMailer integration - ✅ Constructor dengan 7 parameter untuk data tender - ✅ Implementasi sendWithPHPMailer() dengan attachment support - ✅ Dual view support untuk testing dan production 7. **SendJadwalKunjunganEmailPHPMailer**: - ✅ Email class baru untuk jadwal kunjungan dengan PHPMailer - ✅ Constructor dengan emailData parameter - ✅ Attachment support untuk file attachments - ✅ Integration dengan PHPMailerService Testing yang sudah dilakukan: - ✅ SendJadwalKunjunganEmailJob: Email berhasil dikirim ke ddeni05@gmail.com - ✅ SendPenawaranTenderJob: 8 argument + attachment berhasil - ✅ SendPenawaranKJPPTenderJob: Email dengan data KJPP berhasil - ✅ Attachment support: File attachments berhasil dikirim - ✅ Error handling: Exception dan logging berfungsi dengan baik Semua job LPJ sekarang menggunakan PHPMailer dengan attachment support yang lengkap! 🎯
This commit is contained in:
@@ -7,8 +7,10 @@ use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Modules\Lpj\Emails\SendJadwalKunjunganEmail;
|
||||
use Modules\Lpj\Emails\SendJadwalKunjunganEmailPHPMailer;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Exception;
|
||||
|
||||
class SendJadwalKunjunganEmailJob implements ShouldQueue
|
||||
{
|
||||
@@ -28,6 +30,30 @@ class SendJadwalKunjunganEmailJob implements ShouldQueue
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
Mail::to($this->emailData['email'])->send(new SendJadwalKunjunganEmail($this->emailData));
|
||||
// Buat instance email PHPMailer dengan attachment support
|
||||
$email = new SendJadwalKunjunganEmailPHPMailer($this->emailData);
|
||||
|
||||
// Siapkan attachment jika ada
|
||||
$attachments = [];
|
||||
if (isset($this->emailData['attachments'])) {
|
||||
$attachments = $this->emailData['attachments'];
|
||||
}
|
||||
|
||||
// Kirim email menggunakan PHPMailer
|
||||
$result = $email->sendWithPHPMailer($this->emailData['email'], $attachments);
|
||||
|
||||
if ($result['success']) {
|
||||
Log::info('Email jadwal kunjungan berhasil dikirim menggunakan PHPMailer', [
|
||||
'email' => $this->emailData['email'],
|
||||
'result' => $result
|
||||
]);
|
||||
} else {
|
||||
Log::error('Gagal mengirim email jadwal kunjungan menggunakan PHPMailer', [
|
||||
'email' => $this->emailData['email'],
|
||||
'error' => $result['error'] ?? 'Unknown error'
|
||||
]);
|
||||
|
||||
throw new Exception('Gagal mengirim email: ' . ($result['error'] ?? 'Unknown error'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,9 @@ use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Modules\Lpj\Emails\SendPenawaranKJPPEmail;
|
||||
use Modules\Lpj\Emails\SendPenawaranKJPPEmailPHPMailer;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Exception;
|
||||
|
||||
class SendPenawaranKJPPTenderJob implements ShouldQueue
|
||||
{
|
||||
@@ -45,7 +47,7 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
$email = new SendPenawaranKJPPEmail(
|
||||
$email = new SendPenawaranKJPPEmailPHPMailer(
|
||||
$this->dp1,
|
||||
$this->penawaran,
|
||||
$this->permohonan,
|
||||
@@ -53,20 +55,24 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue
|
||||
$this->districts,
|
||||
$this->cities,
|
||||
$this->provinces,
|
||||
$this->user // Kirim user ke email sebagai cc dan bcc
|
||||
$this->user
|
||||
);
|
||||
|
||||
$email->with([
|
||||
'dp1' => $this->dp1, // Kirim seluruh array dp1 ke email
|
||||
'penawaran' => $this->penawaran,
|
||||
'permohonan' => $this->permohonan,
|
||||
'villages' => $this->villages,
|
||||
'districts' => $this->districts,
|
||||
'cities' => $this->cities,
|
||||
'provinces' => $this->provinces,
|
||||
'user' => $this->user // Kirim user ke email sebagai cc dan bcc
|
||||
]);
|
||||
// Gunakan PHPMailer untuk mengirim email
|
||||
$result = $email->sendWithPHPMailer($this->kjpps);
|
||||
|
||||
$send = Mail::to($this->kjpps)->send($email);
|
||||
if ($result['success']) {
|
||||
Log::info('Email penawaran KJPP berhasil dikirim menggunakan PHPMailer', [
|
||||
'recipients' => $this->kjpps,
|
||||
'result' => $result
|
||||
]);
|
||||
} else {
|
||||
Log::error('Gagal mengirim email penawaran KJPP menggunakan PHPMailer', [
|
||||
'recipients' => $this->kjpps,
|
||||
'error' => $result['error'] ?? 'Unknown error'
|
||||
]);
|
||||
|
||||
throw new Exception('Gagal mengirim email: ' . ($result['error'] ?? 'Unknown error'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,9 @@ use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Modules\Lpj\Emails\SendPenawaranTenderEmail;
|
||||
use Modules\Lpj\Emails\SendPenawaranTenderEmailPHPMailer;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Exception;
|
||||
|
||||
class SendPenawaranTenderJob implements ShouldQueue
|
||||
{
|
||||
@@ -43,17 +45,37 @@ class SendPenawaranTenderJob implements ShouldQueue
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
$email = new SendPenawaranTenderEmail();
|
||||
$email->with([
|
||||
'penawaran' => $this->penawaran,
|
||||
'permohonan' => $this->permohonan,
|
||||
'villages' => $this->villages,
|
||||
'districts' => $this->districts,
|
||||
'cities' => $this->cities,
|
||||
'provinces' => $this->provinces,
|
||||
'user' => $this->user // Kirim user ke email ke properti sebagai additional data
|
||||
]);
|
||||
$email = new SendPenawaranTenderEmailPHPMailer(
|
||||
$this->penawaran,
|
||||
$this->permohonan,
|
||||
$this->villages,
|
||||
$this->districts,
|
||||
$this->cities,
|
||||
$this->provinces,
|
||||
$this->user
|
||||
);
|
||||
|
||||
Mail::to($this->kjpps)->send($email);
|
||||
// Siapkan attachment jika ada
|
||||
$attachments = [];
|
||||
if (isset($this->penawaran['attachments'])) {
|
||||
$attachments = $this->penawaran['attachments'];
|
||||
}
|
||||
|
||||
// Kirim email menggunakan PHPMailer
|
||||
$result = $email->sendWithPHPMailer($this->kjpps, $attachments);
|
||||
|
||||
if ($result['success']) {
|
||||
Log::info('Email penawaran tender berhasil dikirim menggunakan PHPMailer', [
|
||||
'recipients' => $this->kjpps,
|
||||
'result' => $result
|
||||
]);
|
||||
} else {
|
||||
Log::error('Gagal mengirim email penawaran tender menggunakan PHPMailer', [
|
||||
'recipients' => $this->kjpps,
|
||||
'error' => $result['error'] ?? 'Unknown error'
|
||||
]);
|
||||
|
||||
throw new Exception('Gagal mengirim email: ' . ($result['error'] ?? 'Unknown error'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user