bool, 'error' => string|null] */ function enviarEmailSMTP($para, $asunto, $cuerpo, $nombreDestinatario = '') { if (BREVO_API_KEY === 'PON-AQUI-TU-API-KEY-DE-BREVO') { return ['success' => false, 'error' => 'API key de Brevo no configurada']; } // ✅ Si el nombre está vacío, usamos el email como nombre para evitar el error 400 $nombreDestinatario = !empty($nombreDestinatario) ? $nombreDestinatario : $para; // Preparar los datos para la API de Brevo $data = [ 'sender' => [ 'name' => SMTP_FROM_NAME, 'email' => SMTP_FROM_EMAIL ], 'to' => [ [ 'email' => $para, 'name' => $nombreDestinatario ] ], 'subject' => $asunto, 'htmlContent' => $cuerpo ]; $payload = json_encode($data); // Inicializar cURL $ch = curl_init(BREVO_API_URL); // Configurar opciones de cURL curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'accept: application/json', 'api-key: ' . BREVO_API_KEY, 'content-type: application/json' ]); // Ejecutar la petición $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $curlError = curl_error($ch); curl_close($ch); // Evaluar la respuesta if ($curlError) { return ['success' => false, 'error' => 'Error de cURL: ' . $curlError]; } if ($httpCode >= 200 && $httpCode < 300) { return ['success' => true, 'error' => null]; } else { // Brevo devuelve los errores en JSON $errorData = json_decode($response, true); $errorMsg = isset($errorData['message']) ? $errorData['message'] : 'Error desconocido de Brevo'; return ['success' => false, 'error' => 'Brevo API (Código ' . $httpCode . '): ' . $errorMsg]; } } ?>