Update: 3-2-2017
Parece ser que en mejoras iniciales de la versión de PHP 5.6 esta verifica los certificados en conexiones SSL. Si la configuración SSL de tu servidor no es correcta o tiene un certificado sin verificar puedes obtener un error del tipo:
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
Para corregir esto hay que reemplazar el certificado inválido, mal configuraro o auto-firmado por uno bueno.
Si todo eso falla, puedes configurarle a PHPMailer (desde la 5.2.10) aceptar conexiones inseguras añadiendo a la función de mas abajo esta opción:
$phpmailer->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
));
Lenguaje del código: PHP (php)
Evidentemente esto bajo tu seguridad y riesgo, lo mejor es tener un certificado en condiciones 🙂
Post original:
En muchas ocasiones me he encontrado que trabajando con hostings, en su mayoría compartidos, estos tienen bloqueado el envío de emails de cuentas no verificadas. WordPress acostumbra a enviar muchos de sus mensajes mediante una cuenta que no existe del tipo wordpress@tudominio.com, y algunos de estos servidores no permiten tal formula. Ya sea por mala configuración o por seguridad los mensajes parecen salir sin indicar que ha fallado el envío, y el destinatario no recibe nada. Configurar servidor SMTP en WordPress es muy fácil, os explico como hacerlo con y sin plugin.
Con plugin
Una forma simple para saltarse este problema sería la de instalar el plugin bastante conocido WP Mail SMTP, el cual te permite configurar una cuenta con su usuario, contraseña y las opciones de como se conecta y envia el mensaje. Mediante una nueva página en Ajustes del admin te permite entrar todos esos datos con un formulario de manera sencilla, y estos quedan almacenados en la base de datos.
Configurar servidor SMTP en WordPress sin plugin
Muchos serán los que piensen que la anterior es la opción sencilla, pero la forma más limpia para hacerlo y la que evita tener que añadir otro plugin más a tu WordPress es el siguiente código. Ya iréis notando que soy poco partidario de atiborrar a WordPress a plugins por cualquier cosa tan simple como añadir una función al código ya existente.
Solo tendrás que añadirlo al functions.php de tu theme y configurar las diferentes variables para que envíe correctamente con tu servidor.
Función para envío mediante SMTP
add_action('phpmailer_init','send_smtp_email');
function send_smtp_email( $phpmailer )
{
// Define que estamos enviando por SMTP
$phpmailer->isSMTP();
// La dirección del HOST del servidor de correo SMTP p.e. smtp.midominio.com
$phpmailer->Host = "your server smtp address";
// Uso autenticación por SMTP (true|false)
$phpmailer->SMTPAuth = true;
// Puerto SMTP - Suele ser el 25, 465 o 587
$phpmailer->Port = "587";
// Usuario de la cuenta de correo
$phpmailer->Username = "user name";
// Contraseña para la autenticación SMTP
$phpmailer->Password = "password";
// El tipo de encriptación que usamos al conectar - ssl (deprecated) o tls
$phpmailer->SMTPSecure = "tls";
$phpmailer->From = "tucuenta@decorreo.com";
$phpmailer->FromName = "Tu nombre";
}
Lenguaje del código: PHP (php)
Y ya está, no tienes más que configurar el código a tus necesidades. Si tenéis algún problema no dudéis en dejar un comentario! 🙂
Post image is artwork from by Freepik
Deja un comentario