Función mail de PHP; funcionamiento, uso y recomendaciones

Función mail() de PHP

PHP permite enviar correos de forma muy sencilla usando la función mail(), con esta no requeriría más que una línea de código realizar envíos desde nuestra aplicación:

mail('email@destino.com', 'Título email', 'Mensaje');

Problemas generados por el uso de mail()

No obstante en su sencillez (la cual viene de los inicios del desarrollo del lenguaje de PHP) radica su principal problema.

A día de hoy el envío de SPAM (correo no deseado) es probablemente uno de los mayores problemas en la red y combatirlo se ha convertido en la lucha personal de todos los proveedores de correo, en esta tarea la función mail no es de demasiada ayuda.

Esta función permite de forma sencilla enviar correos falsificando el remitente del mensaje, de forma que se podría enviar un correo a un destinatario desde cualquier dirección que especifiquemos aunque no sea de nuestra propiedad.

Este funcionamiento que carece de cualquier tipo de veracidad hizo que los proveedores de correo establezcan determinados mecanismos para verificar que los correos son legítimos, para ello se requieren (entre otras cosas) una seríe de datos ocultos en las cabeceras de los correos enviados los cuales no son añadidos cuando se utiliza esta función.

En consecuencia, la mayoría de correos enviados por esta vía son clasificados como correo no deseado.

Tanto en desarrollos propios como en aplicaciones existentes (Wordpress, Joomla o Drupal), el uso de la función mail aparece como método de envío por defecto, no es una mala práctica si únicamente se enviarán notificaciones a uno mismo, pero cuando el correo se convierte en una prioridad (por ejemplo una tienda online que notifica los pedidos a los usuarios), el uso de este método debe ser descartado.

Correos enviados bajo autenticación SMTP

La alternativa es el envío de correos bajo autenticación SMTP, tendrías una cuenta de correo real, creada en cPanel, y esta se usaría para realizar el envío de correos desde la app de forma que esta conecta con el usuario y contraseña a dicha cuenta y la usa para el envío, realizando de esta forma un envío seguro y fiable.

Esto puede sonar complejo, no obstante la mayoría de aplicaciones ya cuenta con esta implementación, por ejemplo en el caso de Joomla simplemente se debe cambiar en las opciones para que use SMTP e indicar el usuario (cuenta de correo) y contraseña del correo que queremos usar para que realice los envíos.

En el caso de Wordpress simplemente tendríamos que instalar un plugin que implemente esta función, existen decenas, por ejemplo Easy WP SMTP.

Y para desarrollos propios tendríamos una librería que a día de hoy es prácticamente un estandar en el envío de correos, phpMailer