Error SMTP de validación de certificado SSL con PHP 5.6 en WordPress

Normalmente utilizo un plugin para enviar los emails de WordPress vía SMTP. Recientemente me he encontrado con este error en algunos WordPress que gestiono:

Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /home/www/wp-includes/class-smtp.php on line 344

Después de buscar por Internet, he encontrado, que PHP 5.6 introduce la verificación del certificado SSL. En este caso, en nuestro servidor de correo estamos utilizando un servidor sin certificado de seguridad, de aquí el error. La solución ha sido desactivar la verificación mediante las opciones del SMTP.

En vez de gestionarlo con un plugin puedes añadir este código en tu fichero functions.php:

add_action('phpmailer_init','send_smtp_email');
function send_smtp_email( $mail )
{
    // Define que estamos enviando por SMTP
    $mail->isSMTP();
 
    // La dirección del HOST del servidor de correo SMTP p.e. smtp.midominio.com
    $mail->Host = "ruta del servidor";
 
    // Uso autenticación por SMTP (true/false)
    $mail->SMTPAuth = true;
 
    // Puerto SMTP - Suele ser el 25, 465 o 587
    $mail->Port = "587";
 
    // Usuario de la cuenta de correo
    $mail->Username = "usuario";
 
    // Contraseña para la autenticación SMTP
    $mail->Password = "contrasena";
 
    // El tipo de encriptación que usamos al conectar - ssl (deprecated) o tls
    $mail->SMTPSecure = "ssl";
 
    $mail->From = "mail@dominio.com";
    $mail->FromName = "Tu nombre";
	
	// Esto es lo que soluciona el error de validación
	$mail->SMTPOptions = array(
		'ssl' => array(
			'verify_peer' => false,
			'verify_peer_name' => false,
			'allow_self_signed' => true
		)
	);

}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *