prepare("SELECT id, firstname, email, status FROM w5_91lj2dj8_access_management WHERE id IN ($placeholders)");
$stmt->execute($ids);
$users = $stmt->fetchAll();
foreach ($users as $user) {
$mail = new PHPMailer(true);
$mail->SMTPDebug = 0;
$mail->Debugoutput = 'html';
try {
$mail->isSMTP();
$mail->Host = 'smtp.hostinger.com';
$mail->SMTPAuth = true;
$mail->Username = 'contato@itecbr.site';
$mail->Password = 'uN@tan251';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Porta 587
$mail->Port = 587;
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
$mail->setFrom('contato@itecbr.site', 'iTecBR');
$mail->addReplyTo('contato@itecbr.site', 'iTecBR');
$mail->addAddress($user['email'], $user['firstname']);
// Headers extras (SPAM reduction)
$mail->addCustomHeader('X-Mailer', 'PHP/' . phpversion());
$mail->addCustomHeader('Precedence', 'bulk');
$mail->addCustomHeader('List-Unsubscribe', '');
$mail->isHTML(true);
$mail->Subject = 'Mensagem do site iTecBR';
// Mensagem com saudação personalizada + status
$mensagemFormatada = "
"; $mensagemFormatada .= nl2br($msg); $mail->Body = $mensagemFormatada; $mail->AltBody = "Olá, {$user['firstname']}!\n\nStatus da sua conta: " . strtoupper($user['status']) . "\n\n" . strip_tags($msg); $mail->send(); $sucesso++; } catch (Exception $e) { $falha++; echo "
Olá, {$user['firstname']}!
"; $mensagemFormatada .= "Status da sua conta: " . strtoupper($user['status']) . "
"; $mensagemFormatada .= ""; $mensagemFormatada .= nl2br($msg); $mail->Body = $mensagemFormatada; $mail->AltBody = "Olá, {$user['firstname']}!\n\nStatus da sua conta: " . strtoupper($user['status']) . "\n\n" . strip_tags($msg); $mail->send(); $sucesso++; } catch (Exception $e) { $falha++; echo "
Erro ao enviar para {$user['email']}: " . $mail->ErrorInfo . "
"; } } $_SESSION['resultado'] = "Resultado: $sucesso enviado(s), $falha falharam.
"; header("Location: " . $_SERVER['PHP_SELF']); exit; } else { $_SESSION['resultado'] = "Por favor, escreva a mensagem e selecione pelo menos um usuário.
"; header("Location: " . $_SERVER['PHP_SELF']); exit; } } // Busca e paginação $search = $_GET['search'] ?? ''; $page = isset($_GET['page']) ? (int)$_GET['page'] : 1; $per_page = 10; $offset = ($page - 1) * $per_page; $sql = "SELECT * FROM w5_91lj2dj8_access_management WHERE firstname LIKE :search LIMIT :limit OFFSET :offset"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':search', "%$search%", PDO::PARAM_STR); $stmt->bindValue(':limit', (int)$per_page, PDO::PARAM_INT); $stmt->bindValue(':offset', (int)$offset, PDO::PARAM_INT); $stmt->execute(); $users = $stmt->fetchAll(); $count_stmt = $pdo->prepare("SELECT COUNT(*) FROM w5_91lj2dj8_access_management WHERE firstname LIKE ?"); $count_stmt->execute(["%$search%"]); $total = $count_stmt->fetchColumn(); $total_pages = ceil($total / $per_page); ?>