Dec 18, 2025
Gustavo B.
12min Leer
La mayoría de las empresas crean una cuenta de correo electrónico profesional para aumentar su credibilidad y generar confianza en los clientes. Para ello, tienes que comprar un dominio y configurar el correo electrónico de tu empresa en un cliente de correo electrónico o en un servidor.
Si construyes tu sitio web o aplicación web con el lenguaje de programación PHP, puedes enviar correos electrónicos directamente desde tu servidor web.
La funcionalidad de correo PHP te permite crear formularios de correo personalizados y enviar correos electrónicos básicos basados en texto a varios destinatarios.
Hay dos formas de enviar correos electrónicos en PHP: utilizando la función PHP mail() incorporada o una biblioteca de envío de correos como PHPMailer.
En este artículo, trataremos las diferencias entre PHPMailer y la función mail() y te mostraremos cómo enviar correos electrónicos con ambos.
Descarga Glosario Completo de Desarrollo Web
PHP mail es una función que envía correos electrónicos utilizando scripts PHP. La función PHP incorporada puede dirigirse a varios destinatarios por envío de correo electrónico. Sin embargo, no es adecuada para el envío masivo de correos electrónicos sin utilizar un paquete de correo PHP externo como PHPMailer.
PHP mail permite a los administradores de sitios web basados en PHP enviar correo desde su servidor web utilizando scripts PHP. Es una alternativa popular a contratar un servicio de alojamiento de correo electrónico de terceros, ya que la función PHP está integrada en el servidor web.
Enviar correos electrónicos en PHP es posible mediante la función nativa PHP mail() o un paquete de correo PHP externo como PHPMailer. Aquí tienes una breve descripción de cada método, incluyendo sus ventajas e inconvenientes:
mail() es una función PHP que utiliza scripts PHP para enviar correos electrónicos sencillos. La función mail incluye tres parámetros obligatorios: $to, $subject y $message. Los parámetros opcionales a utilizar incluyen $headers y $parameters. Los trataremos con más detalle más adelante.
Esta función PHP integrada devuelve un valor booleano al ejecutarse: TRUE si el servidor recibe correctamente el correo electrónico para enviarlo o FALSE en caso de fallo.
Ventajas:
Desventajas:
¡Importante! Si eres usuario de Hostinger, ten en cuenta que los límites actuales para los correos electrónicos enviados mediante PHP mail() son 100/día y 10/minuto. Estos límites se restablecerán cada 24 horas y se consumirán inmediatamente si hay correos en cola.
PHPMailer es una biblioteca popular de envío de correo que soporta el envío de correo a través de la función mail() o de un servidor SMTP. Da acceso a un conjunto de funciones para enviar correo, simplificando el proceso manual de configuración del correo en PHP.
Ventajas:
Desventajas:
¡Importante! Si utilizas PHPMailer con Titan Mail en Hostinger, el límite de envío es de 1000 correos/día y 300 correos/hora. Para el servicio de correo electrónico de Hostinger, el límite es mayor: hasta 3000 correos/día sin límite horario. Comprueba los parámetros y límites de cada servicio, ya que varían en función de tu plan de alojamiento.
En esta sección, cubriremos los pasos para enviar correo utilizando PHPMailer. Recomendamos utilizar una conexión SMTP autenticada con PHPMailer para aumentar la entregabilidad de tus correos frente a los filtros de spam.
Instalar PHPMailer es bastante sencillo, sobre todo si utilizas Composer.
Ten en cuenta que los planes de alojamiento web Premium y Business de Hostinger y las opciones de alojamiento en la nube vienen preinstalados con dos versiones de Composer.
Utiliza el comando composer para activar la versión 1.10 de Composer. Si necesitas la nueva versión 2.0 o utilizas la versión PHP 8.0 o posterior, ejecuta el comando composer2.

¡Importante! Debes instalar PHPMailer utilizando Composer a través de SSH para que funcione correctamente. Añadir un archivo phpmailer.php con código SMTP, como veremos más adelante en esta guía, no funcionará sin una instalación adecuada.
Sigue estos pasos para instalar PHPMailer manualmente:
cd public_html
composer2 require phpmailer/phpmailer

Aprende más sobre los comandos SSH que te ayudarán a gestionar tu servidor.
Para entender cómo funciona PHPMailer, repasemos cada componente del script anterior.
La línea SMTPDebug = 2; sólo es aplicable cuando pruebas un script y quieres ver cómo funciona. Recuerda cambiarla a SMTPDebug = 0; cuando termines la prueba para evitar que los receptores capten el informe de entrega del protocolo SMTP.
Después de instalar PHPMailer, puedes empezar a enviar correos electrónicos en PHP. Esta sección te mostrará cómo enviar correos electrónicos a través del servidor SMTP de Hostinger utilizando PHPMailer.
Para ello, sigue los pasos que se indican a continuación:
<?php
require 'vendor/autoload.php';
use PHPMailerPHPMailerPHPMailer;
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'micorreo@midominio.tld';
$mail->Password = 'My$tr0ngPa55w0rd!';
$mail->setFrom('micorreo@midominio.tld', 'tu nombre');
$mail->addReplyTo('micorreo@midominio.tld', 'tu nombre');
$mail->addAddress(destinatario@dominio.tld', 'nombre destinatario');
$mail->Subject = 'Comprobando si PHPMailer funciona';
$mail->msgHTML(file_get_contents('message.html'), __DIR__);
$mail->Body = 'Esto es sólo el cuerpo del mensaje en texto plano';
//$mail->addAttachment('attachment.txt');
if (!$mail->send()) {
echo 'Mailer Error:'. $mail->ErrorInfo;
} else {
echo '¡El mensaje de correo electrónico se ha enviado!';
}
?>Si utilizas Titan Mail, conéctate a través del puerto 465 (SSL) o 587 (STARTTLS). Visita Emails → Configurar Desktop App para ver los detalles de configuración de cuenta de correo electrónico.
Además de enviar correo PHP simple, PHPMailer permite a los usuarios crear varios formularios de contacto, como encuestas de opinión.
Al igual que los scripts PHP anteriores, crea un nuevo archivo PHP en la carpeta public_html y llámalo formscript.php.
Copia y pega el script que aparece a continuación en el nuevo archivo y modifica los valores en consecuencia:
<?php
use PHPMailerPHPMailerPHPMailer;
$msg = '';
if (array_key_exists('email', $_POST)) {
require 'vendor/autoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Username = 'micorreo@midominio.tld';
$mail->Password = 'My$tr0ngPa55w0rd!';
$mail->setFrom('micorreo@midominio.tld', 'Mr. Snuffles');
$mail->addAddress(destinatario@dominio.tld', 'nombre destinatario');
if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
$mail->Subject = 'PHPMailer contact form';
$mail->isHTML(false);
$mail->Body = <<<EOT
Email: {$_POST['email']}
Name: {$_POST['name']}
Message: {$_POST['message']}
EOT;
if (!$mail->send()) {
$msg = 'Sorry, something went wrong. Please try again later.';
} else {
$msg = 'Message sent! Thanks for contacting us.';
}
} else {
$msg = 'Share it with us!';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Contact form</title>
</head>
<body>
<h1>Contact us</h1>
<?php if (!empty($msg)) {
echo "<h2>$msg</h2>";
} ?>
<form method="POST">
<label for="name">Name: <input type="text" name="name" id="name"></label><br>
<label for="email">Email address: <input type="email" name="email" id="email"></label><br>
<label for="message">Message: <textarea name="message" id="message" rows="8" cols="20"></textarea></label><br>
<input type="submit" value="Send">
</form>
</body>
</html>Tomar la entrada del usuario de $_POST y utilizarla sin sanear no es seguro debido a los ataques de cross-site scripting (XSS).
Guarda los cambios y ejecuta el script desde tu navegador.
He aquí cómo será el resultado:

Si un visitante envía un mensaje a través del formulario, recibirá una confirmación. El contenido del formulario se enviará a la dirección de correo electrónico que hayas introducido aquí:
$mail->addAddress('destinatario@dominio.tld', 'Nombre destinatario');Si el formulario de contacto de PHPMailer no funciona, cambia la línea $mail->SMTPDebug = 0; por $mail->SMTPDebug = 2 para identificar la causa. No olvides eliminar la línea o cambiar el 2 por 0 después.
Si eres usuario de WordPress, puedes agilizar el proceso de creación de formularios utilizando un plugin de formulario de contacto como Formidable Forms, Contact Form 7 o WPForms.
Otro método para enviar correos electrónicos directamente desde PHP es la función incorporada mail().
Para utilizar esta función, los usuarios que alojen su aplicación o sitio PHP en un servidor local deben configurar un programa Sendmail cambiando el archivo php.ini de su carpeta de instalación de PHP.
Si utilizas un servidor de alojamiento, Sendmail suele venir ya preconfigurado. Sin embargo, debes asegurarte de que tu proveedor de alojamiento te permite gestionar manualmente la opción de servicio Sendmail.
Por defecto, el servicio Sendmail ya está activado. No obstante, vuelve a comprobarlo para estar seguro.
¡Importante! Titan Mail activa la función PHP mail() por defecto. Por lo tanto, no puedes activarla o desactivarla en hPanel.
Para ayudarte a entender la función PHP mail(), revisaremos los componentes del script PHP utilizado en la sección anterior.
ini_set( 'display_errors', 1 ); error_reporting( E_ALL );
Las dos primeras líneas de arriba activan el informe de errores para informarte si el script PHP ha fallado al ejecutarse.
$from = "micorreo@midominio.tld";
Esta línea contiene la dirección de correo electrónico del remitente. La mayoría de los proveedores de alojamiento prohíben añadir aquí direcciones de correo electrónico aleatorias debido al riesgo de suplantación.
Por tanto, es mejor utilizar una con tu nombre de dominio para ejecutar el script con éxito.
$to = "micorreo@midominio.tld";
La dirección de correo electrónico del destinatario va aquí. Separa las direcciones de correo electrónico con comas si quieres enviar varios correos.
$subject = "Comprobando correo PHP";
Introduce aquí el asunto del correo electrónico.
$message = "El correo PHP funciona perfectamente";
Aquí, introduce el cuerpo de tu mensaje de correo electrónico.
$headers = "De:" . $from;
Esta línea suele incluir cabeceras adicionales como De, Responder-a y CC. Puedes separarlos con el CRLF.
if (mail ($to,$subject,$message,$headers))
Este script ejecuta la función mail() y comprueba si se ha ejecutado correctamente.
echo "Se ha enviado el mensaje de correo electrónico";
El mensaje anterior aparecerá si la función mail() se ejecuta correctamente.
echo "El mensaje de correo electrónico no se ha enviado";
Alternativamente, verás este mensaje si falla la función mail().
Aunque las cabeceras adicionales son opcionales, es esencial incluir la cabecera “De” al enviar correo. De lo contrario, recibirás una notificación como ésta:
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing.
Después de asegurarte de que Sendmail está activo, crea un archivo de correo PHP dentro del directorio public_html.
He aquí cómo hacerlo:
La función PHP mail() también puede enviar mensajes de correo electrónico HTML. Este formato es muy personalizable en comparación con un mensaje de texto plano.
El proceso para enviar correo HTML es el mismo, pero esta vez debes incluir un mensaje HTML y cabeceras de parámetros adicionales.
Aquí tienes un ejemplo de script básico para enviar un correo electrónico HTML:
<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "micorreo@midominio.tld";
$to = "destinatario@dominio.tld";
$subject = "Comprobando PHP mail";
$message = "
<html>
<head>
<title>This is a test HTML email</title>
</head>
<body>
<p>Hi, it's a test email. Please ignore.</p>
</body>
</html>
";
// The content-type header must be set when sending HTML email
$headers = "MIME-Version: 1.0" . "rn";
$headers .= "Content-type:text/html;charset=UTF-8" . "rn";
$headers = "From:" . $from;
if(mail($to,$subject,$message, $headers)) {
echo "Message was sent.";
} else {
echo "Message was not sent.";
}
?>En la siguiente sección, revisaremos algunos de los problemas más comunes al utilizar la función PHP mail() o PHPMailer y cómo solucionarlos.
Este error significa que el servidor no ha podido autentificar al remitente con los datos facilitados.
Para solucionarlo, comprueba la dirección de correo electrónico que has utilizado para enviar el mensaje y asegúrate de que corresponde a una existente.
Además, asegúrate de que tu Sender Policy Framework (SPF) está activado.
Si utilizas Hostinger, comprueba tu registro SPF accediendo a hPanel y navegando hasta Emails→ Cuentas de correo electrónico→ Configuración DNS → Gestionar la entrega de correo electrónico.
Si el registro SPF está activado, aparecerá como Activo.
Si ves esta advertencia al probar un script de correo PHP, la causa puede ser una de las siguientes:
Hay varias razones por las que el correo PHP puede activar los filtros de spam. Algunas de las causas más comunes son:
Las versiones más recientes de PHP suelen tener un comportamiento SSL más estricto. Si la función PHP mail() no se ejecuta después de actualizar tu PHP a la última versión, ésta podría ser la causa.
El uso de PHPMailer con algunos proveedores de alojamiento también suele provocar este error de código.
Por ejemplo, según la wiki de PHPMailer, GoDaddy bloquea las conexiones SMTP salientes a través de los puertos 25, 465 y 587 a servidores de terceros como Gmail y Hotmail, excepto los suyos propios. Además, no admite la integración con servidores SMTP de terceros.
Utiliza el siguiente script para resolver este error:
$mail-> SMTPOptions = array( $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
¡Importante! Evita implementar estos cambios globalmente en php.ini, ya que hacerlo permite conexiones inseguras, un problema de seguridad que PHP ha solucionado desde la versión 5.6.
Como el SMTP de Hostinger no tiene este problema, considera la posibilidad de migrar a nuestro servicio de correo electrónico empresarial para una mejor experiencia de envío.

Puedes enviar correos electrónicos con PHP utilizando la función mail() o una biblioteca de envío de correos como PHPMailer.
La primera es adecuada para enviar pequeños volúmenes de mensajes sencillos basados en texto, mientras que la segunda es mejor para enviar correos masivos o crear formularios de contacto.
Puedes aprovechar la función de correo PHP incorporada creando un nuevo archivo PHP en el directorio public_html y ejecutando el script mediante tu navegador web.
Por otro lado, enviar correos electrónicos con PHPMailer requiere instalar la biblioteca de código a través de Composer, crear una cuenta de correo electrónico para ella y configurar los ajustes SMTP de tu alojamiento.
En este tutorial, cubrimos la instalación de PHPMailer, la creación de un script de prueba y la configuración de un sencillo formulario de contacto.
También vimos el envío de correos electrónicos con la función PHP mail() y la resolución de errores comunes durante el proceso de envío de correos electrónicos.
Esperamos que este tutorial te haya resultado útil. Si tienes más preguntas, déjalas en la sección de comentarios más abajo.
Esta sección cubre algunas de las preguntas más comunes sobre enviar un email con php.
Depende de tu proveedor de alojamiento. Con GoDaddy, no puedes enviar correo a bandejas de entrada que implementan los protocolos de autenticación de correo SPF y DKIM, como Gmail, Yahoo y Hotmail. u003cbr /u003eu003cbr /u003eSin embargo, este problema no persiste con Hostinger. Ponte en contacto con tu proveedor de alojamiento web para aclarar su configuración SMTP y si admite PHP Mailer con servidores SMTP de terceros.
Puedes utilizar la función u003cstrongu003efilter_var() u003c/strongu003ey pasar la dirección de correo electrónico al filtro u003cstrongu003eFILTER_VALIDATE_EMAILu003c/strongu003e. u003cbr /u003eu003cbr /u003eEste filtro verificará la validez del correo electrónico, asegurándose de que no contiene caracteres no admitidos ni espacios en blanco.
Todo el contenido de los tutoriales en este sitio web está sujeto a los rigurosos estándares y valores editoriales de Hostinger.
Comentarios
June 11 2018
Un tutorial muy completo. Gracias! Lo pondré en práctica
August 01 2018
¡Hola! He probado la primera opción, ya que para algo sencillo me parece más interesante. Todo funciona correctamente, pero en la cabecera del mail que recibo, me sale: u710086...@srv111.main-hosting.eu en nombre de info@midominio.com ¿Cómo puedo hacer que solo me llegue con info@midominio.com? Gracias
November 19 2018
Hola Iván, Recomendamos que revises todos los aspectos relacionados con PHP Mail desde aquí mismo: https://www.hostinger.co/tutoriales/enviar-emails-usando-php-mail/#Metodo-2-8211-Usar-PHPMailer Esto te dará la autentificación desde el servidor de salida SMTP de Hostinger.
July 28 2019
¡Gracias por la ayuda! Me sirvió ?
July 29 2019
Qué bien!!!! :D
August 05 2019
buenisimo, pero tengo el problema de que cuando quiero enviar desde una cuenta de una empresa donde trabajo me sale esto: SERVER -> CLIENT: 220-pacha2.*****.com.bo ESMTP Exim 4.92 #2 Mon, 05 Aug 2019 12:39:09 -0400 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail. a que se debe?? :(
August 05 2019
aclaro que los datos de usuario y contraseña son correctos, pero aun asi me sale el mensaje
August 29 2019
Hola Diego, Este problema puede deberse a una configuración incorrecta del servidor. Si quieres muéstranos el mensaje completo para poder ayudarte.
August 08 2020
Buenas, mi duda es la siguiente: Quiero tener un envío de correos de manera automática, por ejemplo que cada día se haga una comprobación X y en base a esa comprobación se envíen una serie de correos, Ej: que se envíen 2 correos cada 5 días... Esto como se podría configurar en Hostinger o PHP? Gracias!
August 14 2020
Hola Kazu, en este caso te sugiero contactar a tu proveedor de hosting para que te ayude. Si estás con Hostinger nuestros agentes te pueden orientar para que puedas realizar tu configuración.
September 24 2020
Hola tengo este error al usar PHPMailer, que podria ser?: Parse error: syntax error, unexpected 'use' (T_USE) in, Gracias la que me pueda ayudar
November 18 2020
Hola, he probado con testmail.php, cambiando el mail de destinatario como se indica, pero no me llega el correo, sin embargo me dice que el mail se envió exitosamente.
December 09 2020
Hola Juan, en ese caso te sugiero contactar a tu proveedor de hosting para que te ayude. Si estás con Hostinger nuestros agentes te pueden orientar para que puedas encontrar una solución a tu problema. Saludos!
December 27 2020
Ya mismo lo estoy implementando en videoper.com. Mil Gracias por toda la data.