Cómo enviar correos electrónicos desde PHP: Lo que necesitas saber

Enviar correos electrónicos desde PHP es una necesidad común para muchas aplicaciones web, ya sea para notificaciones, restablecimiento de contraseñas o confirmaciones de compra. Sin embargo, hacerlo correctamente implica más que simplemente usar la función mail() de PHP. Existen múltiples consideraciones, desde la entrega confiable hasta la seguridad y autenticación del correo.

En este artículo, exploramos las diferentes formas de enviar correos electrónicos en PHP, los desafíos asociados y las mejores prácticas para garantizar que tus correos lleguen a la bandeja de entrada y no a la carpeta de spam.


Opciones para enviar correos desde PHP

Hay varias maneras de enviar correos electrónicos utilizando PHP:

  1. Usar la función mail()
    • Es la opción más simple y no requiere bibliotecas externas.
    • Sin embargo, tiene limitaciones significativas en cuanto a autenticación y entrega confiable.
  2. Usar una biblioteca como PHPMailer o SwiftMailer
    • Facilitan el envío de correos electrónicos con autenticación SMTP.
    • Permiten adjuntar archivos, utilizar HTML y configurar encabezados de seguridad.
  3. Utilizar servicios de correo transaccional
    • Plataformas como Mailgun, Amazon SES, Mandrill o SendGrid ofrecen APIs confiables para el envío de correos electrónicos.
    • Garantizan mayor tasa de entrega y ofrecen herramientas de monitoreo.

Cómo enviar un correo con mail() en PHP

Si decides usar la función incorporada de PHP, aquí tienes un ejemplo básico:

<?php
$to = "[email protected]";
$subject = "Prueba de correo";
$message = "Hola, este es un correo de prueba enviado desde PHP.";
$headers = "From: [email protected]" . "\r\n" .
           "Reply-To: [email protected]" . "\r\n" .
           "X-Mailer: PHP/" . phpversion();

mail($to, $subject, $message, $headers);
?>

Limitaciones de mail()

  • No admite autenticación SMTP.
  • Puede ser bloqueado por servidores de correo debido a la falta de autenticación.
  • No permite enviar archivos adjuntos ni mensajes en formato HTML con facilidad.
  • La configuración de sendmail en el servidor puede afectar su funcionamiento.

Usar PHPMailer para un envío más seguro y confiable

PHPMailer es una de las bibliotecas más utilizadas para enviar correos desde PHP con soporte para SMTP y autenticación.

Instalar PHPMailer

Si usas Composer, puedes instalar PHPMailer con:

composer require phpmailer/phpmailer

Ejemplo de envío de correo con PHPMailer

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    // Configuración del servidor SMTP
    $mail->isSMTP();
    $mail->Host = 'smtp.ejemplo.com';
    $mail->SMTPAuth = true;
    $mail->Username = '[email protected]';
    $mail->Password = 'tu_contraseña';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = 587;

    // Configurar destinatarios
    $mail->setFrom('[email protected]', 'Tu Nombre');
    $mail->addAddress('[email protected]');

    // Contenido del correo
    $mail->isHTML(true);
    $mail->Subject = 'Correo de prueba con PHPMailer';
    $mail->Body    = '<b>Este es un mensaje de prueba enviado con PHPMailer.</b>';
    $mail->AltBody = 'Este es un mensaje de prueba enviado con PHPMailer.';

    // Enviar el correo
    $mail->send();
    echo 'Mensaje enviado correctamente';
} catch (Exception $e) {
    echo "Error al enviar el correo: {$mail->ErrorInfo}";
}
?>

Ventajas de PHPMailer

✅ Soporte para autenticación SMTP.
✅ Permite adjuntar archivos y enviar correos en formato HTML.
✅ Reduce la posibilidad de que el correo sea marcado como spam.
✅ Compatible con servicios de correo populares como Gmail, Outlook y Mailgun.


Cómo garantizar la entrega de los correos

Para evitar que tus correos terminen en la carpeta de spam, sigue estas prácticas recomendadas:

  1. Configura registros SPF, DKIM y DMARC
    • SPF (Sender Policy Framework): Define qué servidores pueden enviar correos en nombre de tu dominio.
    • DKIM (DomainKeys Identified Mail): Firma digitalmente los correos para verificar su autenticidad.
    • DMARC (Domain-based Message Authentication): Permite establecer reglas sobre cómo tratar correos sospechosos.
  2. Usa servidores SMTP con autenticación
    • Enviar correos directamente desde mail() en PHP puede hacer que los mensajes sean rechazados por servidores como Gmail.
    • Servicios como Amazon SES, Mailgun o SendGrid ofrecen alta tasa de entrega.
  3. Evita palabras clave que activan filtros de spam
    • Frases como «Oferta especial», «Haz clic aquí», «Gratis» pueden hacer que el correo sea marcado como spam.
  4. Configura un dominio personalizado para el correo saliente
    • Utilizar un dominio genérico como @gmail.com o @hotmail.com puede reducir la tasa de entrega.
  5. Utiliza TLS o SSL para conexiones seguras
    • Asegúrate de que tu servidor de correo admite conexiones seguras para proteger la información de los correos enviados.

Conclusión

Aunque PHP permite enviar correos de forma nativa con la función mail(), en la mayoría de los casos es recomendable usar una biblioteca como PHPMailer o servicios de correo transaccional como SendGrid, Acumbamail, Amazon SES o Mailgun.

Implementar configuraciones adecuadas como SPF, DKIM y DMARC, junto con la autenticación SMTP, asegurará que tus correos sean entregados correctamente y no sean marcados como spam.

David Carrero Fernández-Baillo

Experimentando con un sitio web sobre WordPress, este popular gestor de contenidos, entre otros muchos proyectos.

Te puede interesar...

    Comments are closed

    WordPress Directo
    WPDirecto.com es una revista especializada en WordPress y WooCommerce que ofrece una amplia gama de recursos, incluyendo tutoriales, análisis de plugins y plantillas, consejos de optimización y estrategias de SEO, para ayudar a los usuarios a mejorar y personalizar sus sitios web, manteniéndolos informados sobre las últimas novedades y tendencias en el mundo de WordPress.

    © 1995-2025 Color Vivo Internet, SLU (Medios y Redes Online).. Otros contenidos se cita fuente. Infraestructura cloud servidores dedicados de Stackscale.