Cómo configurar nuestro sitio web con WordPress para que el envío de mails (formularios de contacto, presupuestos, etc.) se realice de forma más segura usando, por ejemplo, una cuenta de GMail (o de cualquier otro proveedor de mail). De esta forma evitaremos el uso de la función mail del servidor de PHP donde tengamos alojado nuestro sitio web (que a veces está muy limitado por temas de spam). Existen algunos plugin de terceros que permiten realizar el envío de mails usando servidores externos como GMail, pero nosotros explicamos cómo hacerlo, de forma sencilla, sin plugin.

Requisitos para configurar los envíos de mails de WordPress con servidores externos

Necesitaremos un sitio web con WordPress y acceso a los ficheros php de WordPress (normalmente por FTP). También necesitaremos disponer de una cuenta de correo electrónico (con usuario y contraseña) para el servidor que queramos usar. En nuestro caso lo haremos con GMail de Google.

En el ejemplo usamos WordPress en su versión 4.9.5 y una cuenta de Google Apps (ahora llamado G Suite) que será la que configuremos para el envío de correos electrónicos desde nuestro sitio web.

También necesitaremos poder acceder a la configuración de PHP de nuestro alojamiento o servidor de WordPress. Dependiendo del hosting en el que tengamos alojado el sitio web procederemos de una forma u otra para configurar PHP. Solo necesitaremos modificar un parámetro que ne muchos casos ya viene habilitado.

Configurar el servidor PHP para permitir SSL

Si tenemos acceso a la configuración de PHP deberemos comprobar que la línea: extension=php_openssl.dll está descomentada (activa). Este fichero de configuración, para el caso de instalaciones en Windows, suele venir en la carpeta de PHP con el nombre php.ini, será suficiente con editarlo y descomentar o añadir si no existe la línea anterior.

Si tu servidor es Linux puede que tengas que instalar el paquete php-openssl. Para el caso de Linux CentOS 7 podríamos hacerlo con el comando:

yum install php-openssl

Y editar el fichero /etc/php.ini (puede estar en otra ubicación en función de la distribución de Linux y la versión, incluso con otro nombre de fichero).

A continuación dejamos enlace a un fichero completo de php.ini en una instalación con AppServ sobre Windows:

Si no disponemos de acceso al fichero de configuración de PHP en nuestro alojamiento, debemos buscar la opción de modificar la configuración de PHP, que suelen tenerla en el panel de control:

Configurar el servidor PHP para permitir SSL

Y si tampoco tenemos posibilidad de modificar la configuración de PHP seguiremos los pasos de este artículo y probaremos el envío, tal vez ya esté habilitada la opción extension=php_openssl.dll.

Configurar WordPress para permitir envío de mail con servidores externos

Es un proceso bastante sencillo, será suficiente con que accedamos al fichero functions.php que está ubicado dentro de la carpeta wp-includes:

Configurar WordPress para permitir envío de mail con servidores externos

Podremos abrir este fichero con cualquier editor de texto plano sin formato. Una vez abierto añadiremos lo siguiente (copiar y pegar), justo debajo de la línea:

require( ABSPATH . WPINC . ‘/option.php’ );

Lógicamente cambiaremos los valores de ejemplo del código anterior por nuestros datos del usuario y servidor que queramos emplear como enviador de mails de WordPress.

El fichero functions.php quedará así:

Configurar WordPress para permitir envío de mail con servidores externos

Guardaremos los cambios y ya tendremos preparado nuestro sitio web WordPress para que los envíos de correos electrónicos se realicen desde un servidor externo, evitando así problemas de spam y bloqueos de IP en listas negras.

A continuación os dejamos un ejemplo de fichero completo de functions.php con esta opción del envío de mails añadida, para WordPress 4.9.4:

Formulario de contacto de WordPress con plugin Contact Form 7

El plugin Contact Form 7 es de los más usados en WordPress para la creación de formularios de contacto y envío por mail al administrador del sitio web WordPress. Desde la configuración de este formulario indicaremos los datos del emisor y destinatario del formulario de contacto:

Formulario de contacto de WordPress con plugin Contact Form 7

Es conveniente que coincida el dominio del email emisor (De) con el receptor (Para), de lo contrario Contact Form 7 nos avisará del problema.

Y con esto ya tendremos totalmente configurado nuestro sitio web WordPress para que el envío de todos los email a través de un servidor de mail externo. Esto incluye a los envíos realizados internamente, por ejemplo cuando tenemos algún foro y estamos suscritos, o las notificaciones si un usuario se da de alta en nuestro sitio web.

Configuración de seguridad para el caso de servidor de mail con GMail GSuite

Si hemos optado por usar como servidor de mail una cuenta de G Suite (GMail), y si hemos optado por TLS como cifrado del correo, necesitaremos habilitar la siguiente opción en la configuración de la cuenta de GMail o G Suite utilizada. Accederemos a «Mi cuenta»:

Configuración de seguridad para el caso de servidor de mail con GMail GSuite

Pulsaremos en «Aplicaciones con acceso a la cuenta»:

Configuración de seguridad para el caso de servidor de mail con GMail GSuite

Luego pulsaremos en «Aplicaciones con acceso a la cuenta» nuevamente y habilitaremos la opción «Permitir el acceso de aplicaciones menos seguras: Sí»:

Configuración de seguridad para el caso de servidor de mail con GMail GSuite

Si no se aplica esta configuración puede que Google te avise con un correo electrónico como este:

Configuración de seguridad para el caso de servidor de mail con GMail GSuite

Con el texto:

Revisa el intento de inicio de sesión bloqueado
Hola, aaa:
Google acaba de bloquear a alguien para impedir que iniciara sesión en tu cuenta de Google, zzz@aaa.com, desde una aplicación que puede poner tu cuenta en peligro.
Aplicación menos segura
jueves, 7 de junio de 2018 13:36 (CET)
España*
¿No reconoces esta actividad?
Si no se ha producido un error recientemente al intentar acceder a un servicio de Google, como Gmail, desde una aplicación que no es de Google, puede que alguien tenga tu contraseña.
¿Has sido tú quien ha intentado iniciar sesión?
Google continuará bloqueando los intentos de inicio de sesión procedentes de la aplicación que estás utilizando porque tiene problemas de seguridad conocidos o porque está obsoleta. Puedes continuar utilizando esta aplicación permitiendo el acceso a aplicaciones menos seguras, aunque esto puede hacer que tu cuenta sea más vulnerable.
El equipo de Cuentas de Google