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.
Hay varias maneras de enviar correos electrónicos utilizando PHP:
mail()
mail() en PHPSi 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); ?>
mail()sendmail en el servidor puede afectar su funcionamiento.PHPMailer es una de las bibliotecas más utilizadas para enviar correos desde PHP con soporte para SMTP y autenticación.
Si usas Composer, puedes instalar PHPMailer con:
composer require phpmailer/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}";
}
?>
✅ 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.
Para evitar que tus correos terminen en la carpeta de spam, sigue estas prácticas recomendadas:
mail() en PHP puede hacer que los mensajes sean rechazados por servidores como Gmail.@gmail.com o @hotmail.com puede reducir la tasa de entrega.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.
