This commit is contained in:
Francesco Picone
2025-12-09 17:23:11 +01:00
parent 1ea20d24a0
commit 77377cbaf1

View File

@@ -470,12 +470,32 @@ function send_smtp_email($to, $subject, $message) {
// Inizia TLS se richiesto // Inizia TLS se richiesto
if (SMTP_ENCRYPTION === 'tls') { if (SMTP_ENCRYPTION === 'tls') {
$send("STARTTLS"); $send("STARTTLS");
$read(); $response = $read();
// Usa una versione più compatibile di TLS // Verifica risposta 220
$crypto_method = STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT; if (strpos($response, '220') !== 0) {
if (!stream_socket_enable_crypto($smtp, true, $crypto_method)) { error_log("SMTP Error: STARTTLS fallito - " . $response);
error_log("SMTP Error: Impossibile avviare crittografia TLS"); 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); fclose($smtp);
return false; return false;
} }