Cómo enviar emails con PHP

Inicio / Cómo hacer para... / Cómo enviar emails con PHP

Es muy común la necesidad de email 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 de envíos de mail 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 alternativas resultará más adecuada que el uso de la simple función mail en contextos en los que la performance es 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 lograrlo (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 sobre cómo lograrlo).

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!

mchojrin

Hola! Soy Mauro Chojrin, estudié la Lic. en Ciencias de la Computación en la UBA.

Me desempeño como docente de programación desde el año 1997.

Pasé por diferentes instituciones (Escuela Técnica ORT, Digital House, EducacionIT, ITMaster, Escuela DaVinci entre otros).

Actualmente coordino el desarrollo de proyectos web en https://leewayweb.com y los cursos dictados en Leeway Academy

2 comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.