Envío de correo electrónico en PHP: Guía completa de la biblioteca PHPMailer

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

Biblioteca PHPMailer: envío profesional de correo electrónico en PHP



El envío de correos electrónicos es una de las funciones clave de cualquier aplicación web moderna. La función integrada de PHP mail() a menudo resulta insuficientemente flexible y segura: no admite autenticación SMTP, cifrado TLS/SSL, envío de correos HTML con archivos adjuntos y no siempre funciona correctamente en alojamientos compartidos. La solución a estos problemas es la biblioteca PHPMailer, que se ha convertido en el estándar de facto para el envío de correos electrónicos en PHP.



¿Qué es PHPMailer?

PHPMailer es una biblioteca potente y fácil de usar para enviar correos electrónicos desde scripts PHP. Admite:

  • Envío a través de un servidor SMTP (Gmail, Yandex, Mail.ru, correo corporativo);
  • Cifrado TLS y SSL;
  • Correos HTML con archivos adjuntos (imágenes, PDF, documentos);
  • Codificación UTF-8 y trabajo con cualquier idioma (ruso, chino, etc.);
  • Texto alternativo (texto plano) para clientes de correo sin HTML;
  • Firma DKIM y SPF para protección contra spam;
  • Funcionamiento a través de sendmail local o mail() integrado como fallback.


Instalación de PHPMailer

La forma más sencilla es a través de Composer. En la terminal, ejecute el comando en la raíz de su proyecto:

composer require phpmailer/phpmailer

Si no se utiliza Composer, puede descargar el archivo desde GitHub e incluir los archivos manualmente:

require_once '/ruta/a/PHPMailer/src/PHPMailer.php';require_once '/ruta/a/PHPMailer/src/SMTP.php';require_once '/ruta/a/PHPMailer/src/Exception.php';


Ejemplo básico de envío de correo a través de SMTP de Gmail

Veamos una configuración mínima para enviar un correo a través del servidor SMTP de Gmail. Tenga en cuenta: para que funcione, deberá crear una contraseña de aplicación en la configuración de su cuenta de Google (o usar la opción menos segura de "acceso a aplicaciones no seguras").

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

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try { // Configuración del servidor $mail->SMTPDebug = SMTP::DEBUG_OFF; // Depuración (0 - desactivado, 2 - detallado) $mail->isSMTP(); // Usar SMTP $mail->Host = 'smtp.gmail.com'; // Servidor SMTP $mail->SMTPAuth = true; // Activar autenticación $mail->Username = 'tu-correo@gmail.com'; // Usuario SMTP $mail->Password = 'tu-contraseña-app'; // Contraseña SMTP (contraseña de aplicación) $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SSL $mail->Port = 465; // Puerto para SSL (587 para TLS)

// Remitente y destinatario $mail->setFrom('from@example.com', 'Nombre del remitente'); $mail->addAddress('to@example.com', 'Nombre del destinatario'); // Se pueden añadir varios $mail->addReplyTo('reply@example.com', 'Responder');

// Archivos adjuntos (opcional) $mail->addAttachment('/ruta/al/archivo.pdf', 'Nombre.pdf');

// Contenido del correo $mail->isHTML(true); // Formato HTML $mail->Subject = '¡Saludos desde PHPMailer!'; $mail->Body = '<b>Este es un correo HTML</b> con texto en español.'; $mail->AltBody = 'Este es el texto alternativo para clientes de correo sin HTML.';

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


Envío a través de Yandex.Mail

Para Yandex.Mail, los parámetros cambian ligeramente. Importante: en la configuración de la bandeja de entrada, debe permitir el acceso mediante el protocolo IMAP/SMTP y crear una contraseña de aplicación (si la autenticación de dos factores está activada).

$mail                    

Recommendations