Sunteți pe pagina 1din 15

9/4/2018 Cómo enviar emails usando PHP mail

EMAIL

Cómo enviar emails usando PHP mail


 Last Updated on: marzo 29th, 2018  Gustavo Bustos  10 Min Leer

Contents

Introducción

Lo que necesitarás

Método 1 – Usar la función PHP mail()

Método 2 – Usar PHPMailer

Resolución de errores comunes de PHP mail y PHPMailer

Conclusión

Introducción
En este tutorial aprenderemos sobre el PHP mail y cómo usarlo. También te mostraremos cómo
con gurar y usar PHPMailer, una popular biblioteca de envío de correo.

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 1/15
9/4/2018 Cómo enviar emails usando PHP mail

En general, el correo electrónico es una parte integral de cualquier proyecto o negocio. Hoy en día, ser
rápido y receptivo es un gran valor, especialmente cuando se trata de responder a tus clientes. En
muchos casos, la capacidad de respuesta y la comunicación bien plani cada es el factor decisivo que los
usuarios toman en consideración al hacer compras.

Aunque existen muchas maneras de enviar correos, veremos especí camente el correo de PHP mail. En
esencia, puedes enviar correos electrónicos a través de PHP de dos maneras:

mediante la función mail() incorporada en PHP;

mediante el uso de una biblioteca de terceros, como PHPMailer con SMTP.

¡Veamos cómo funciona cada una y cómo podemos usarlas para enviar correos electrónicos!

Lo que necesitarás
Antes de comenzar con esta guía, necesitarás lo siguiente:

Una cuenta de hosting web;

Una cuenta de correo electrónico;

La función PHP mail() habilitada;

La función SMTP habilitada.

Un dominio apuntando a los registros MX de Hostinger

Método 1 – Usar la función PHP mail()


La función mail() en PHP permite enviar correos electrónicos usando un programa local de sendmail.
Siempre que llames a la función mail(), esta invoca un programa sendmail local, generalmente
con gurado por el administrador del sistema. Si tu alojamiento web está en Hostinger, puedes habilitar
o deshabilitar esta funcionalidad en la sección Emails-> Control del servicio de correo.

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 2/15
9/4/2018 Cómo enviar emails usando PHP mail

El servicio sendmail está habilitado por defecto. Pero en caso de que no lo esté, puedes hacerlo con solo
unos par de clics.

Paso 1 – Crear un archivo de prueba para el correo PHP


Antes que nada, tendremos que crear un archivo para el script de correo PHP. Lo colocaremos en el
directorio public_html para que se pueda acceder fácilmente a través del nombre de dominio. Puedes
usar el Administrador de archivos o un cliente FTP para esta tarea. Vamos a nombrar el archivo
testmail.php.

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 3/15
9/4/2018 Cómo enviar emails usando PHP mail

Paso 2: Entender el correo de PHP


Ahora conozcamos los componentes de un script básico de PHP mail:

1. <?php
2. ini_set( 'display_errors', 1 );
3. error_reporting( E_ALL );
4. $from = "test@hostinger-tutorials.com";
5. $to = "test@gmail.com";
6. $subject = "Checking PHP mail";
7. $message = "PHP mail works just fine";
8. $headers = "From:" . $from;
9. mail($to,$subject,$message, $headers);
10. echo "The email message was sent.";
11. );

Las primeras dos líneas habilitan el informe de errores. Esto permitirá la ayuda en caso de que el script
no se ejecute. El resto de los ingredientes son:

Dirección de correo electrónico del remitente. La mayoría


de los proveedores de hosting no permiten el uso de
direcciones de correo electrónico aleatorias aquí, ya que se
$from puede utilizar para la suplantación de identidad. Debes
ingresar una dirección de correo electrónico creada para
tu nombre de dominio para poder ejecutar correctamente
el correo de PHP.

$to Dirección de correo electrónico del destinatario. Como


estamos enviando esto a manera de prueba, puede ser un

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 4/15
9/4/2018 Cómo enviar emails usando PHP mail

correo electrónico personal.

$subject El asunto del mensaje de correo electrónico.

$message Esta sección es para el contenido del mensaje.

Los encabezados especi can información vital, como la


$headers dirección del remitente, la ubicación de respuesta (reply-
to) y más.

mail
Esta es la función que ejecuta el correo PHP.
($to,$subject,$message,$headers)

echo “El correo PHP fue enviado


 Este mensaje aparecerá una vez que se ejecute el script.
exitosamente.”

Para obtener más información sobre sendmail y sus componentes, puedes consultar la documentación
o cial de PHP.

Paso 3 – Ejecutar el script de PHP mail


Si colocaste tu script PHP en el directorio public_html, puedes ejecutarlo accediendo a
TuDominio.com/testmail.php. Deberías ver el siguiente mensaje:

Aquí hay un ejemplo del correo PHP recibido usando el código anterior:
https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 5/15
9/4/2018 Cómo enviar emails usando PHP mail

¡Felicitaciones! Ahora comprendes la sintaxis básica del correo PHP y puedes usarla para enviar
mensajes.

Método 2 – Usar PHPMailer


PHPMailer es una popular biblioteca de envío de correo para PHP. Es compatible con el envío de correo
a través de la función mail() o SMTP. En resumen, PHPMailer es un método e caz para enviar emails en
un entorno basado en PHP.

Paso 1 – Recolectar detalles para PHPMailer


Para utilizar PHPMailer con el SMTP de Hostinger, primero tendrás que crear una cuenta de correo
electrónico. Puedes hacerlo en la sección Cuentas de correo en el panel de hosting web.

Cuando hayas terminado, toma tus datos SMTP ubicados en la misma sección:

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 6/15
9/4/2018 Cómo enviar emails usando PHP mail

Deberías tener cuatro ingredientes por ahora, que son:

1. Nombre de usuario

2. Contraseña de cuenta de correo

3. Host SMTP

4. Puerto SMTP

Paso 2 – Instalar PHPMailer


Como ya tenemos todos los detalles requeridos, podemos comenzar con la con guración de PHPMailer.
Una forma fácil de hacerlo es usando Composer. Está pre-instalado en nuestros planes de hosting
compartido, por lo que solo tendrás que conectarte a través de SSH y ejecutar el siguiente comando:

1. cd public_html

Y luego ejecuta:

1. composer require phpmailer/phpmailer

Espera un momento a que nalice la instalación y PHPMailer aparecerá en un directorio de proveedores


recién creado.

Paso 3 – Entendiendo PHPMailer


Para entender PHPMailer y cómo funciona, investiguemos un ejemplo que usa SMTP para el envío.

1. <?php
2. use PHPMailer\PHPMailer\PHPMailer;
3. require '../vendor/autoload.php';
4. $mail = new PHPMailer;
5. $mail->isSMTP();

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 7/15
9/4/2018 Cómo enviar emails usando PHP mail

6. $mail->SMTPDebug = 2;
7. $mail->Host = 'mx1.hostinger.com';
8. $mail->Port = 587;
9. $mail->SMTPAuth = true;
10. $mail->Username = 'test@hostinger-tutorials.com';
11. $mail->Password = 'EMAIL_ACCOUNT_PASSWORD';
12. $mail->setFrom('test@hostinger-tutorials.com', 'Your Name');
13. $mail->addReplyTo('reply-box@hostinger-tutorials.com', 'Your Name');
14. $mail->addAddress('example@gmail.com', 'Receiver Name');
15. $mail->Subject = 'PHPMailer SMTP message';
16. $mail->msgHTML(file_get_contents('message.html'), __DIR__);
17. $mail->AltBody = 'This is a plain text message body';
18. $mail->addAttachment('test.txt');
19. if (!$mail->send()) {
20. echo 'Mailer Error: ' . $mail->ErrorInfo;
21. } else {
22. echo 'Message sent!';
23. }

Veamos qué hace cada componente:

use PHPMailer\PHPMailer\PHPMailer;

Esta línea importa la clase PHPMailer al espacio de nombres global.

require ‘../vendor/autoload.php’;

Incluye varias bibliotecas que PHPMailer necesita.

$mail->

Todas estas variables contienen información vital, como detalles del servidor, encabezados, mensajes,
archivos adjuntos y más. En resumen, se aseguran de que el remitente sea legítimo con la autenticación
SMTP.

if (!$mail->send()) {

De ne qué sucede cuando se ejecuta el script.

echo ‘Mailer Error: ‘ . $mail->ErrorInfo;

Si el script no se puede enviar, verás lo que salió mal.

else

De ne lo que sucede si el script se ejecuta.

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 8/15
9/4/2018 Cómo enviar emails usando PHP mail

echo ‘Message sent!’;

Este mensaje lo verá el usuario si todo funciona bien.

Tip profesional: la línea SMTPDebug = 2; es útil al probar el script y ver cómo funciona.

Déjalo como SMTPDebug = 0; en la versión nal para evitar que el usuario nal vea el informe
de entrega de SMTP.

Si revisaste todo el código, notarás que estamos haciendo algo un poco diferente que en el primer
ejemplo. Estamos enviando un mensaje HTML. Su contenido se tomará del archivo message.html
ubicado en el mismo directorio. Esto te permite formatear el texto y proporciona una mayor
funcionalidad en comparación con los mensajes de texto sin formato.

Paso 4 – Ejecutar el script de PHPMailer


Vamos a crear un archivo testphpmailer.php y completar todos los campos con los detalles de SMTP
que obtuvimos anteriormente. Ejecuta el script ingresando TuDominio.com/testphpmailer.php en el
navegador y verás un mensaje similar a este:

Este es un ejemplo del mensaje recibido:

phpmailer-smtp-mensaje-de-ejemplo-1

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 9/15
9/4/2018 Cómo enviar emails usando PHP mail

Observa cómo se formateó el texto esta vez, ya que usamos HTML en lugar de texto sin formato.
Además, pudimos agregar un archivo adjunto.

Paso 5 – Ejemplo de formulario de contacto de PHPMailer


Puedes utilizar PHPMailer para mucho más que simplemente enviar mensajes simples. Una forma de
utilizarlo es crear un formulario de contacto donde tus visitantes o usuarios puedan ponerse en contacto
contigo. Aquí hay un ejemplo básico de tal script:

1. <?php
2. use PHPMailer\PHPMailer\PHPMailer;
3. require '../vendor/autoload.php';
4. $mail = new PHPMailer;
5. $mail->isSMTP();
6. $mail->Host = 'mx1.hostinger.com';
7. $mail->Port = 587;
8. $mail->SMTPAuth = true;
9. $mail->Username = 'test@hostinger-tutorials.com';
10. $mail->Password = 'EMAIL_ACCOUNT_PASSWORD';
11. $mail->setFrom('test@hostinger-tutorials.com', 'Mr. Drago');
12. $mail->addAddress('example@gmail.com', 'Receiver Name');
13. if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
14. $mail->Subject = 'PHPMailer contact form';
15. $mail->isHTML(false);
16. $mail->Body = <<<EOT
17. Email: {$_POST['email']}
18. Name: {$_POST['name']}
19. Message: {$_POST['message']}
20. EOT;
21. if (!$mail->send()) {
22. $msg = 'Sorry, something went wrong. Please try again
later.';
23. } else {
24. $msg = 'Message sent! Thanks for contacting us.';
25. }
26. } else {
27. $msg = 'Invalid email address, message ignored.';
28. }
29. ?>
30. <!DOCTYPE html>
31. <html lang="en">
32. <head>
33. <meta charset="UTF-8">
34. <title>Contact form</title>
35. </head>
36. <body>
37. <h1>Let's get in touch!</h1>
38. <?php if (!empty($msg)) {
https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 10/15
9/4/2018 Cómo enviar emails usando PHP mail

39. echo "<h2>$msg</h2>";


40. } ?>
41. <form method="POST">
42. <label for="name">Name: <input type="text" name="name" id="name">
</label><br><br>
43.
44. <label for="email">Email: <input type="email" name="email"
id="email"></label><br><br>
45.
46. <label for="message">Message: <textarea name="message"
id="message" rows="8" cols="20"></textarea></label><br><br>
47. <input type="submit" value="Send">
48. </form>
49. </body>
50. </html>

Y el resultado nal es:

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 11/15
9/4/2018 Cómo enviar emails usando PHP mail

Cuando el usuario envíe su mensaje, recibirá una con rmación y el contenido llegará al buzón del correo
electrónico ingresado en el campo addAddress.

Tip profesional: En caso de que el formulario de contacto de PHPMailer no funcione, agrega


la siguiente línea para ver la causa del problema: $mail->SMTPDebug = 2;

¡No olvides quitarlo o dejarlo en cero cuando termines!

PHPMailer ofrece ejemplos adicionales que puedes probar en su repositorio o cial de GitHub. Además,
si usas WordPress, puedes crear fácilmente un formulario de contacto con la ayuda de plugins.

Resolución de errores comunes de PHP mail y


PHPMailer
PHPMailer es una herramienta bastante fácil de dominar. Pero los errores pueden ocurrir de vez en
cuando. Veamos la lista de los errores más comunes al enviar correos con PHP mail y cómo podemos
solucionarlos.

Dirección del remitente rechazada: no es propiedad del usuario


Este error puede aparecer como sender address rejected: now owned by user y signi ca que el
servidor no pudo autenticarse utilizando los detalles proporcionados. Para solucionarlo, comprueba los
encabezados from y asegúrate de que corresponden a un buzón de correo electrónico existente. De lo
contrario, asegúrate de crearlo o cambiarlo y el script comenzará a ejecutarse. Por último, asegúrate de
que tu registro SPF esté habilitado.

Gmail no pudo veri car que ejemplo.com envió este mensaje


Si ves esta advertencia al probar un script de correo PHP, podría signi car una de las siguientes cosas:

Tu registro SPF no está habilitado.

El encabezado from usa una dirección de correo electrónico que no existe o que no posees.
Asegúrate de usar detalles de autenticación SMTP válidos.

El correo va a la carpeta de spam


Puede haber varias razones por las cuales un mensaje puede resultar en la carpeta de correo no
deseado (spam). Veamos algunas de las más comunes:

Asunto engañoso. Algunos ejemplos serían “Prueba“; “Hola“; “Pruebas“; “Urgente” o algo similar.
Asegúrate de establecer una intención clara en el asunto del mensaje.

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 12/15
9/4/2018 Cómo enviar emails usando PHP mail

Los encabezados from incorrectos a menudo causan esto. Es una medida de seguridad para evitar
falsi caciones y estafas por correo electrónico.

Usaste palabras consideradas como spam. Esta categoría incluiría frases como “gran oferta“; “haga
clic aquí“; “promoción especial“; “Esto no es spam” y similares. Intenta cambiar el contenido de tu
mensaje para ver si ese es el caso.

Tu lista de correo no tiene un botón para darse de baja. Si su cientes personas reportan tus correos
como spam, entonces esto es inevitable. Tener un botón para darse de baja es una buena forma de
evitar esto.

Conclusión
¡Felicitaciones! Ahora estás familiarizado con PHP mail y puedes usar PHPMailer para enviar correos
electrónicos con autenticación SMTP. Aunque este tutorial proporciona ejemplos básicos, la misma
sintaxis se puede utilizar para desarrollar un formulario de contacto u otras extensiones para tu sitio
web. Para obtener información más detallada, asegúrate de consultar el proyecto o cial de PHPMailer.

¿Tienes algún consejo, trucos o ideas para compartir? ¡Estamos ansiosos por escucharlos en los
comentarios a continuación!

Comentario

Nombre *

Correo Electrónico *

Sitio Web

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 13/15
9/4/2018 Cómo enviar emails usando PHP mail

PUBLICAR UN COMENTARIO

Únete a cientos de suscriptores en todo el


mundo
y consigue increíbles tutoriales y descuentos en tu email

Email

Suscribirme

Comienza a ahorrar hoy


mismo!
Alojamientos con todo incluido y nombre de dominio po

AR$ 00

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 14/15
36
9/4/2018 Cómo enviar emails usando PHP mail

/mes

Comienza Ahora

Haz Feliz a un amigo hoy!


Comparte libremente esta promocion, muestra a tus amigos cómo ahorrar de una forma realmente
inteligente en línea

Like Share Twittear

https://www.hostinger.com.ar/tutoriales/enviar-emails-usando-php-mail/ 15/15

S-ar putea să vă placă și