103 lines
3.2 KiB
PHP
103 lines
3.2 KiB
PHP
<?php
|
|
// Desactivar la salida de errores para producción
|
|
ini_set('display_errors', 0);
|
|
error_reporting(E_ALL);
|
|
|
|
// Iniciar un búfer de salida para capturar cualquier salida no deseada
|
|
ob_start();
|
|
|
|
// Incluir la clase de PHPMailer
|
|
use PHPMailer\PHPMailer\PHPMailer;
|
|
use PHPMailer\PHPMailer\SMTP;
|
|
use PHPMailer\PHPMailer\Exception;
|
|
|
|
require __DIR__ . '/vendor/autoload.php';
|
|
|
|
// Obtener los datos del formulario
|
|
$nombre = $_POST["nombre"] ?? '';
|
|
$email = $_POST["email"] ?? '';
|
|
$ciudad = $_POST["ciudad"] ?? '';
|
|
$telefono = $_POST["telefono"] ?? '';
|
|
$descripcion = $_POST["descripcion"] ?? '';
|
|
|
|
// Log para depuración (no afecta la salida)
|
|
error_log("Datos recibidos: " . print_r($_POST, true));
|
|
|
|
// Crear una instancia de PHPMailer
|
|
$mail = new PHPMailer(true);
|
|
|
|
try {
|
|
// Configurar el servidor SMTP
|
|
// Usar la función mail() nativa de PHP configurada por Plesk
|
|
// (Eliminamos la configuración de Titan SMTP)
|
|
|
|
// Configurar el remitente y destinatario
|
|
$mail->setFrom('web@trimape.mx', 'Formulario Web Trimape');
|
|
$mail->addAddress('contacto@trimape.mx', 'Contacto Trimape');
|
|
$mail->addReplyTo($email, $nombre);
|
|
|
|
// Configurar el asunto y el cuerpo del correo
|
|
$mail->isHTML(true);
|
|
$mail->Subject = 'Nuevo mensaje de contacto desde el sitio web';
|
|
|
|
// Crear un cuerpo de correo con los datos del formulario
|
|
$mail->Body = "
|
|
<html>
|
|
<head>
|
|
<style>
|
|
body { font-family: Arial, sans-serif; }
|
|
.container { padding: 20px; }
|
|
.field { margin-bottom: 10px; }
|
|
.label { font-weight: bold; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class='container'>
|
|
<h2>Nuevo mensaje de contacto</h2>
|
|
<div class='field'>
|
|
<span class='label'>Nombre:</span> {$nombre}
|
|
</div>
|
|
<div class='field'>
|
|
<span class='label'>Email:</span> {$email}
|
|
</div>
|
|
<div class='field'>
|
|
<span class='label'>Ciudad del Proyecto:</span> {$ciudad}
|
|
</div>
|
|
<div class='field'>
|
|
<span class='label'>Teléfono:</span> {$telefono}
|
|
</div>
|
|
<div class='field'>
|
|
<span class='label'>Descripción:</span><br>
|
|
" . nl2br(htmlspecialchars($descripcion)) . "
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>";
|
|
|
|
$mail->AltBody = "Nombre: {$nombre}\nEmail: {$email}\nCiudad: {$ciudad}\nTeléfono: {$telefono}\nDescripción: {$descripcion}";
|
|
|
|
// Enviar el correo
|
|
$mail->send();
|
|
|
|
// Limpiar cualquier salida anterior
|
|
ob_clean();
|
|
|
|
// Asegurarnos de que no hay salida antes de los headers
|
|
header('Content-Type: application/json');
|
|
echo json_encode(['success' => true, 'message' => 'Su mensaje ha sido enviado correctamente. Nos pondremos en contacto pronto.']);
|
|
|
|
} catch (Exception $e) {
|
|
// Log del error para el administrador
|
|
error_log("Error PHPMailer: " . $mail->ErrorInfo);
|
|
|
|
// Limpiar cualquier salida anterior
|
|
ob_clean();
|
|
|
|
// Respuesta para AJAX
|
|
header('Content-Type: application/json');
|
|
echo json_encode(['success' => false, 'message' => "No se pudo enviar el mensaje. Por favor, inténtelo más tarde."]);
|
|
}
|
|
|
|
// Finalizar y limpiar el búfer
|
|
ob_end_flush();
|
|
?>
|