diff --git a/includes/functions.php b/includes/functions.php index 29aada6..9bd63c8 100644 --- a/includes/functions.php +++ b/includes/functions.php @@ -470,12 +470,32 @@ function send_smtp_email($to, $subject, $message) { // Inizia TLS se richiesto if (SMTP_ENCRYPTION === 'tls') { $send("STARTTLS"); - $read(); + $response = $read(); - // Usa una versione più compatibile di TLS - $crypto_method = STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT; - if (!stream_socket_enable_crypto($smtp, true, $crypto_method)) { - error_log("SMTP Error: Impossibile avviare crittografia TLS"); + // Verifica risposta 220 + if (strpos($response, '220') !== 0) { + error_log("SMTP Error: STARTTLS fallito - " . $response); + fclose($smtp); + return false; + } + + // Abilita TLS con metodo compatibile (fallback automatico tra TLSv1.2, TLSv1.1, TLSv1.0) + $crypto_methods = [ + STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, + STREAM_CRYPTO_METHOD_TLS_CLIENT, + STREAM_CRYPTO_METHOD_SSLv23_CLIENT + ]; + + $tls_enabled = false; + foreach ($crypto_methods as $method) { + if (@stream_socket_enable_crypto($smtp, true, $method)) { + $tls_enabled = true; + break; + } + } + + if (!$tls_enabled) { + error_log("SMTP Error: Impossibile avviare crittografia TLS con nessun metodo"); fclose($smtp); return false; }