Gestionar correctamente el correo en WordPress es muy importante para un correcto funcionamiento de nuestra web. Si no lo hacemos perderemos el principal canal de comunicación con nuestros usuarios y visitantes.
Gestión del correo en WordPress
WordPress no incluye ninguna opción para configurar el envio de correos, utiliza para ello las funcionalidades incluidas en el servidor web. Que los desarrolladores hayan optado por esta decisión, no resulta tan sorprendente si tenemos en cuenta un par de detalles.
Lo habitual es que el correo sea una de las funcionalidades incluidas en un dominio, por tanto, la solución más lógica es derivar el envio de los emails hacia los servidores correspondientes. Teniendo en cuenta el gran número de proveedores de servicios de correo disponibles, no tiene mucho sentido complicar WordPress incoporando todas las posibles opciones de configuración. Pienso que eso puede explicar la decision tomada por sus desarrolladores.
Lo que debemos hacer es conectar nuestra web con un servicio de correo adecuado a nuestras necesidades. Si el volumen de envios no es muy grande, podemos utilizar una cuenta de nuestro propio dominio y en caso contrario tendremos que contratar servicios especializados en envios masivos como por ejemplo MailGun o SendGrid.
Una vez decidido que servicio utilizaremos, configuraremos nuestro correo en WordPress. Veremos las dos formas de hacerlo, mediante código o con el uso de un plugin.
Enviar correo desde WordPress sin plugin
Veamos como implementar el envio de correos mediante el protocolo SMTP añadiendo algunas líneas de código en nuestro functions.php. Primero definimos algunas constantes necesarias
define( 'SMTP_USER', 'user@example.com' ); define( 'SMTP_PASS', 'contraseña' ); define( 'SMTP_HOST', 'smtp.example.com' ); define( 'SMTP_FROM', 'website@example.com' ); define( 'SMTP_NAME', 'Nombre del Sitio' ); define( 'SMTP_PORT', '25' ); define( 'SMTP_SECURE', 'tls' ); define( 'SMTP_AUTH', true ); define( 'SMTP_DEBUG', 0 );
SMTP_USER, SMTP_PASS y SMTP_HOST son los valores correspondientes al usuario, contraseña y dirección del servidor de correo que utilizaremos.
SMTP_PORT, SMTP_SECURE y SMTP_AUTH correspondel al puerto utilizado (habitualmente 25, 465 ó 587), la encriptación (TLS o SSL) y si la autenticación es oligatoria (true) o no (false).
Estos valores los obtendremos de nuestro servidor de correo, son los mismos que usamos para configurar nuestra cuenta en cualquier otro cliente de email.
SMTP_FROM y SMTP_NAME son los datos que verán los usuarios: la dirección de email configurada y el nombre de quien envía el correo. En esa dirección recibiremos las respuestas de nuestros usuarios.
SMTP_DEBUG controla el registro (0 - deshabilitado, 1 - registra la información que enviamos, 2 - incluye también las respuestas del servidor, 3 - añade información sobre el establecvimiento de la conexión inicial) de las comunicaciones. Esta información la encontraremos en el registro de errores de nuestro servidor.
El paso siguiente es configurar la función wp_mail() para que utilice nuestros valores
add_action( 'phpmailer_init', 'send_smtp_email' ); function send_smtp_email( $phpmailer ) { $phpmailer->isSMTP(); $phpmailer->Host = SMTP_HOST; $phpmailer->SMTPAuth = SMTP_AUTH; $phpmailer->Port = SMTP_PORT; $phpmailer->Username = SMTP_USER; $phpmailer->Password = SMTP_PASS; $phpmailer->SMTPSecure = SMTP_SECURE; $phpmailer->From = SMTP_FROM; $phpmailer->FromName = SMTP_NAME; }
Añadiendo estas líneas de código tendremos nuestro correo en WordPress correctamente configurado para utilizar la cuenta que hayamos seleccionado en nuestro servidor.
Usar un plugin para enviar correo desde WordPress
Existen muchos plugins para realizar esta tarea. Me centraré en Easy WP SMTP, un plugin sencillo con +200.000 instalaciones y que cumple su cometido a la perfección.
Lo descargamos desde el repositorio oficial y lo activamos. Su configuración la encontraremos en Ajustes.
En Ajustes SMTP tenemos los mismos parámetros que hemos visto anteriormente. Ajustes Adicionales nos permitirá activar el registro de errores en caso necesario, recomendamos dejar las otras opciones con sus valores por defecto. Guardamos la configuración y enviamos un correo de prueba para comprobar que todo está OK.
Si tenemos nuestra web en Google Cloud, no podremos utilizar SMTP, al menos de una forma sencilla. La razón es que Google tiene bloqueado los puertos habituales de correo en sus instancias. Esto nos deja dos posibles soluciones:
- Cambiamos el puerto en nuestro servidor de correo por uno no estandard, aunque no todos lo permiten.
- Utilizar una cuenta de GMail o GSuite. Para ello mi recomendación es utilizar el plugin GMail SMTP. Veamos como usarlo
Descargamos y activamos Gmail SMTP, encontraremos su configuración en ajustes.
Lo primero que debemos hacer es registrar nuestro servidor con GMail, para ello debemos acceder a console.developers.google.com con las credenciales de la cuenta que vamos a usar. Creamos un nuevo proyecto o seleccionamos uno existente.
Si no lo hemos hecho antes, habilitamos la API de Gmail en Biblioteca y posteriormente crearemos las credenciales adecuadas para nuestra web haciendo click en el botón correspondiente. Seleccionamos ID de cliente OAuth en la lista.
En el paso siguiente seleccionamos Web, escojemos un nombre arbitrario, indicamos nuestra web y la pegamos la url generada por el plugin en su pantalla de configuración
Hacemos click en Crear y obtendremos el ID de Cliente y el Secreto que pegaremos el la pantalla del plugin. Como OAuth Email Address utilizaremos la dirección de Gmail que vamos a utilizar. Completamos la configuración con la dirección de correo y el nombre que queremos que vean nuestros visitantes y el puerto 587, ya que Gmail utiliza TLS.
Guardamos los cambios y aparecerá un botón nuevo: Grant Permissions. Hacemos click sobre él y veremos la solicitud de confirmación por parte de Google. Aceptamos, y si todo está bien tendremos nuestra web conectada con GMail. Lo veremos porque el estado cambiará a verde en la configuración del plugin.
Finalmente comprobamos que todo está correctamente configurado, enviándonos un correo de prueba.
Conclusiones
Hemos visto diferentes maneras de configurar el envio de correo en WordPress. Los métodos propuestos tienen un elemento común: preservan el uso de la función wp_mail(). De esta forma reducimos al mínimo los posibles problemas de compatibilidad, mientras siguen a nuestra disposición los filtros y acciones disponibles.
Es fundamental utilizar un servicio de correo debidamente registrado. Eso evitará que los servidores destino rechacen nuestros mensajes y nos quitará muchos dolores de cabeza. Podemos implementar nuestro propio servidor de correo, pero gestionarlo no sera fácil, lo sé por experiencia propia.
También debemos tener en cuenta los límites impuestos por nuestro servidor de correo. Si vamos a hacer envios masivos (boletines, email marketing, etc) es muy probable que tengamos que recurrir a empresas especializadas en este tipo de servicios.