Envío de correo electrónico en PHP: PHPMailer, SwiftMailer y mail() — guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Envío de correo electrónico en PHP: resumen de bibliotecas y herramientas



El envío de correos electrónicos es una parte esencial de cualquier aplicación web: registro de usuarios, restablecimiento de contraseña, notificaciones, campañas de marketing. En PHP existen varias formas de implementar el envío de correos: desde la función incorporada mail() hasta bibliotecas especializadas como PHPMailer y SwiftMailer. En este artículo analizaremos en detalle cada herramienta, sus ventajas, desventajas y proporcionaremos ejemplos prácticos de código.



1. La función incorporada mail()



La forma más sencilla es usar la función nativa de PHP mail(). No requiere instalar bibliotecas adicionales, pero tiene limitaciones importantes.



Sintaxis

mail($to, $subject, $message, $headers, $parameters);


Ejemplo de envío de un correo de texto simple

<?php$to = 'user@example.com';$subject = 'Saludo';$message = '¡Hola! Este es un correo de prueba.';$headers = 'From: noreply@pythonlib.ru' . "\\r" .           'Reply-To: support@pythonlib.ru' . "\\r" .           'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)) { echo 'Correo enviado.';} else { echo 'Error al enviar.';}?>


Desventajas de mail()

  • Depende de la configuración del servidor (sendmail, postfix, etc.) — a menudo termina en spam.
  • No admite correos HTML ni archivos adjuntos sin crear manualmente los encabezados MIME.
  • No tiene soporte para autenticación SMTP.
  • Es difícil depurar errores.


Debido a estas limitaciones, para proyectos serios se recomienda usar bibliotecas especializadas.



2. PHPMailer — la biblioteca más popular



PHPMailer es una biblioteca potente y fácil de usar para enviar correos electrónicos en PHP. Soporta HTML, archivos adjuntos, autenticación SMTP, cifrado TLS/SSL y muchas otras funciones.



Instalación

composer require phpmailer/phpmailer

O descárguela manualmente desde GitHub.



Ejemplo de envío de un correo HTML a través de SMTP de Gmail

<?phpuse PHPMailer\\PHPMailer\\PHPMailer;use PHPMailer\\PHPMailer\\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try { // Configuración del servidor $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'your-email@gmail.com'; $mail->Password = 'your-app-password'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587;

// Remitente y destinatario $mail->setFrom('from@example.com', 'Su nombre'); $mail->addAddress('user@example.com', 'Destinatario');

// Archivos adjuntos $mail->addAttachment('/path/to/file.pdf', 'document.pdf');

// Contenido $mail->isHTML(true); $mail->Subject = 'Saludo desde PHPMailer'; $mail->Body = '<h1>Título</h1><p>Este es un correo <b>HTML</b>.</p>'; $mail->AltBody = 'Versión de texto para clientes de correo sin soporte HTML';

$mail->send(); echo 'Correo enviado.';} catch (Exception $e) { echo "Error: {$mail->ErrorInfo}";}?>


Ventajas de PHPMailer

  • API simple y clara.
  • Soporte para todos los protocolos de correo modernos.
  • Codificación automática de archivos adjuntos.
  • Buena documentación y gran comunidad.


3. SwiftMailer — una alternativa flexible



SwiftMailer es otra biblioteca popular que proporciona una interfaz orientada a objetos para enviar correos. A diferencia de PHPMailer, utiliza el concepto de "transportes" (Transport) y "mensajes" (Message).



Instalación

composer re                    

Recommendations