penawaran = $penawaran; $this->permohonan = $permohonan; $this->villages = $villages; $this->districts = $districts; $this->cities = $cities; $this->provinces = $provinces; $this->user = $user; // 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. */ public function build(): self { return $this->view('lpj::penawaran.kirimEmail'); } /** * Kirim email menggunakan PHPMailer dengan dukungan attachment * * @param mixed $recipients * @param array $attachments * @return array */ public function sendWithPHPMailer($recipients, $attachments = []) { // Gunakan view yang dapat diakses secara global untuk testing // Jika data adalah array (testing), gunakan view sederhana // Jika data adalah object (production), gunakan view asli if (is_array($this->penawaran) || is_array($this->permohonan) || is_array($this->villages)) { // Mode testing - gunakan view sederhana $htmlContent = view('emails.test-penawaran-tender-phpmailer', [ 'penawaran' => $this->penawaran, 'permohonan' => $this->permohonan, 'villages' => $this->villages, 'districts' => $this->districts, 'cities' => $this->cities, 'provinces' => $this->provinces, 'user' => $this->user ])->render(); } else { // Mode production - gunakan view asli $htmlContent = view('lpj::penawaran.kirimEmail', [ 'penawaran' => $this->penawaran, 'permohonan' => $this->permohonan, 'villages' => $this->villages, 'districts' => $this->districts, 'cities' => $this->cities, 'provinces' => $this->provinces, 'user' => $this->user ])->render(); } // Siapkan data untuk PHPMailer $data = [ 'from' => [ 'address' => config('mail.from.address', 'BAGI@ag.co.id'), 'name' => config('mail.from.name', 'Notifikasi Sistem Laravel') ], 'to' => [], 'cc' => [], 'bcc' => [], 'subject' => 'Penawaran Tender', 'html' => $htmlContent, 'text' => strip_tags($htmlContent), 'attachments' => $attachments ]; // Proses recipients if (is_array($recipients)) { foreach ($recipients as $recipient) { if (is_string($recipient)) { $data['to'][] = ['address' => $recipient, 'name' => '']; } elseif (is_array($recipient)) { $data['to'][] = [ 'address' => $recipient['address'] ?? $recipient['email'] ?? '', 'name' => $recipient['name'] ?? '' ]; } } } else { $data['to'][] = ['address' => $recipients, 'name' => '']; } // Tambahkan CC dan BCC dari user jika ada if ($this->user && isset($this->user->email)) { $data['cc'][] = [ 'address' => $this->user->email, 'name' => $this->user->name ?? 'User' ]; } // Kirim email menggunakan PHPMailerService return $this->phpMailerService->sendEmail($data); } }