id = $emailData['emailData']['id']; $this->waktu_penilaian = $emailData['emailData']['waktu_penilaian']; $this->deskripsi_penilaian = $emailData['emailData']['deskripsi_penilaian']; // Inisialisasi PHPMailerService $this->phpMailerService = new PHPMailerService([ 'host' => config('mail.mailers.phpmailer.host', 'mail.ag.co.id'), 'port' => config('mail.mailers.phpmailer.port', 465), 'username' => config('mail.mailers.phpmailer.username', 'BAGI@ag.co.id'), 'password' => config('mail.mailers.phpmailer.password', 'BAG@202!'), ]); } /** * Build the message. * * @return $this */ public function build(): self { return $this->view('lpj::emails.jadwal-kunjungan'); } /** * Kirim email menggunakan PHPMailer dengan dukungan attachment * * @param mixed $recipients * @param array $attachments * @return array */ public function sendWithPHPMailer($recipients, $attachments = []) { try { // Build HTML content $htmlContent = $this->buildHtml(); // Setup PHPMailer $mail = new PHPMailer(true); // Server settings - menggunakan konfigurasi yang sama seperti EmailController $mail->isSMTP(); $mail->Host = config('mail.mailers.smtp.host', 'mail.ag.co.id'); $mail->SMTPAuth = true; $mail->Username = config('mail.mailers.smtp.username', 'BAGI@ag.co.id'); $mail->Password = config('mail.mailers.smtp.password', 'BAG@202!'); $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = config('mail.mailers.smtp.port', 465); // Bypass SSL Verification - sama seperti EmailController $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); // Recipients if (is_array($recipients)) { foreach ($recipients as $recipient) { $mail->addAddress($recipient); } } else { $mail->addAddress($recipients); } // Content $mail->isHTML(true); $mail->Subject = 'Jadwal Kunjungan Penilaian Resmi'; $mail->Body = $htmlContent; $mail->AltBody = strip_tags($htmlContent); // Add attachments if provided foreach ($attachments as $attachment) { if (file_exists($attachment)) { $mail->addAttachment($attachment); } } $mail->send(); Log::info('Email jadwal kunjungan berhasil dikirim menggunakan PHPMailer', [ 'recipients' => $recipients, 'attachments' => $attachments ]); return [ 'success' => true, 'message' => 'Email berhasil dikirim' ]; } catch (\Exception $e) { Log::error('Gagal mengirim email jadwal kunjungan menggunakan PHPMailer', [ 'recipients' => $recipients, 'error' => $e->getMessage() ]); return [ 'success' => false, 'error' => $e->getMessage() ]; } } }