isSMTP(); $mail->Host = SMTP_HOST; $mail->SMTPAuth = true; $mail->Username = SMTP_USERNAME; $mail->Password = SMTP_PASSWORD; $mail->SMTPSecure = SMTP_ENCRYPTION === 'tls' ? PHPMailer::ENCRYPTION_STARTTLS : PHPMailer::ENCRYPTION_SMTPS; $mail->Port = SMTP_PORT; $mail->CharSet = 'UTF-8'; $mail->setFrom(SMTP_FROM_EMAIL, SMTP_FROM_NAME); $mail->addAddress($to); $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $htmlBody; $mail->AltBody = $altBody !== '' ? $altBody : strip_tags($htmlBody); $mail->send(); return true; } catch (PHPMailerException $e) { error_log("[mailer] Gagal kirim email ke {$to}: " . $mail->ErrorInfo); return false; } } /** * Template siap pakai untuk email verifikasi/reset password sederhana, * konsisten dengan tema warna gelap NexHost. */ function render_simple_email_template(string $heading, string $message, ?string $buttonText = null, ?string $buttonUrl = null): string { $buttonHtml = ''; if ($buttonText && $buttonUrl) { $buttonHtml = '' . htmlspecialchars($buttonText) . ''; } return '
' . nl2br(htmlspecialchars($message)) . '
' . $buttonHtml . '© ' . date('Y') . ' NexHost. Email ini dikirim otomatis, mohon tidak membalas.