La función PHP mail() permite entregar un mensaje al sistema de correo configurado en el servidor, pero que la función devuelva un resultado correcto no significa que el mensaje vaya a llegar necesariamente a la bandeja del destinatario.
Qué hace PHP mail()
La aplicación entrega el mensaje al mecanismo de transporte configurado en PHP y en el sistema operativo. A partir de allí, el servidor de correo debe procesarlo y realizar la entrega.
Por qué muchas aplicaciones utilizan SMTP autenticado
WordPress, tiendas virtuales, formularios y otras aplicaciones suelen ofrecer la posibilidad de enviar mediante SMTP autenticado. Esta opción permite utilizar explícitamente un servidor, usuario, contraseña y cifrado y facilita el diagnóstico de errores de autenticación o conexión.
Datos habituales de SMTP
- Servidor SMTP indicado por el proveedor.
- Dirección de correo completa como usuario, cuando corresponda.
- Contraseña de la cuenta.
- Puerto 465 con SSL/TLS o 587 con STARTTLS, según la configuración del servidor.
- Autenticación SMTP habilitada.
SPF, DKIM y DMARC
El método utilizado por la aplicación no reemplaza la autenticación del dominio. Para mejorar la legitimidad de los mensajes deben estar correctamente configurados SPF, DKIM y DMARC.
PHP mail() y grandes volúmenes
La propia documentación de PHP advierte que mail() no es una solución eficiente para enviar grandes cantidades de mensajes en un bucle. Para campañas o volúmenes importantes conviene utilizar una biblioteca de correo y un servicio de entrega adecuado.
Si los mensajes no llegan
Revisá los registros de la aplicación y del servidor, la dirección remitente, autenticación DNS y posibles rebotes. Un resultado exitoso de mail() solo indica que el mensaje fue aceptado para su procesamiento local.