Es muy común la necesidad de enviar emails desde PHP, tanto si se trata de un script de CLI (como puede ser un cronjob) o de una aplicación web.
Existen varias opciones a la hora de conseguirlo:
La más simple es el uso de la función mail.
Es una función de bastante bajo nivel (es decir, algo tosca), pero está disponible en casi cualquier instalación de php.
Esta opción está bien para escenarios simples, pero para usos más avanzados (como enviar adjuntos, HTML o similares), es conveniente utilizar alguna otra opción algo más robusta.
Algunas alternativas interesantes son:
Cualquiera de estas resultará más adecuada que el uso de la simple función mail en contextos en los que la performance sea una preocupación (Por ejemplo, cuando hay alto tráfico en el sitio) o cuando se prefiere realizar el envío a través de un servidor SMTP externo.
Si decides usar una librería (Es decir, pasar de la función mail), algo muy interesante por hacer es apoyarte en algún servicio externo (Por ejemplo MailGun).
Si bien es posible utilizar un servicio como este (O algún otro SMTP externo) a través de la función mail, es bastante tortuoso (Ya no depende directamente de código PHP si no que requiere de meterle mano a la configuración del sendmail y otras cuestiones así…).
Lo mejor es usar una librería que tenga esta posibilidad, como por ejemplo SwiftMailer (Aquí un poco más de detalle).
Otro tema importante: enviar correos con HTML (Por ejemplo para que incluyan imágenes) no es nada divertido si usas la función mail a secas.
Por último, ten en cuenta que la función mail no realiza ninguna clase de optimización… si usas SMTP, cada envío realizará su propia conexión… imagínate la penalización de rendimiento que tendrán tus usuarios… Para evitar este problema deberías, al menos, intentar usar una librería que maneje un pool de conexiones SMTP (Casi cualquiera que no use mail :p).
Espero haberte convencido de que la función mail es sólo para casos de emergencia :).
¿Lo logré o tienes alguna experiencia que indique algo diferente? ¡Deja un comentario!

¿Te quedó alguna duda? Publica aca tu pregunta