Cómo enviar correos electrónicos con PHPMailer

PHPMailer es un framework que regula el envío de correos electrónicos a través de PHP. Este tipo de transmisión de correo electrónico se utiliza principalmente para los formularios de contacto de las páginas web, pero el envío de correos privados también es posible.

Hosted Exchange con IONOS

La solución de correo electrónico y calendario líder en el mercado con el hosting seguro de IONOS.

Microsoft 2016
Dominio gratis
Asistencia 24/7

¿Qué es PHPMailer?

PHPMailer es una extensión de correo proporcionada por la comunidad para PHP. A diferencia del comando de correo, que está implementado en PHP desde el principio, la probabilidad de que los correos electrónicos enviados con PHPMailer acaben en la carpeta de spam es mucho menor. El motivo es que los correos generados con PHPMailer se envían utilizando SMTP. Se trata del Protocolo para transferencia simple de correo, que se utiliza para transferir correos electrónicos a través de Internet.

¿Para qué se utiliza PHPMailer?

El uso de PHPMailer es un poco más engorroso que el uso de proveedores de correo electrónico o programas de correo integrados en el ordenador. Una pregunta frecuenta es, por tanto, en qué ámbitos es recomendable el uso de PHPMailer. El uso del framework PHP facilita la creación de respuestas automatizadas, como las que se producen al ejecutar una tienda web. PHPMailer también es ideal para los formularios de contacto de tu página.

Requisitos para el uso de PHPMailer

Para poder trabajar con PHPMailer, primero necesitas un servidor SMTP. Depende de ti si utilizas el servidor de correo de un proveedor o creas tu propio servidor. Además, se recomienda un gestor de paquetes para PHP como Composer para la instalación de la extensión PHP.

Consejo

Otro requisito para usar PHPMailer es dominar los fundamentos de PHP. Si todavía tienes dificultades con esto, nuestro tutorial PHP para principiantes puede ayudarte.

Instalación de PHPMailer: instrucciones paso a paso

Paso 1. Descarga la versión actual de PHPMailer

Descarga la última versión de PHPMailer. La descarga puede hacerse a través del gestor de paquetes o manualmente desde GitHub.

Variante 1. Descarga a través de Composer

Si has instalado el gestor de paquetes Composer, utiliza el comando:

composer require phpmailer/phpmailer

Importante: Si has instalado PHPMailer con Composer, debes incluir “composer” en tu código PHP para poder enviar correos.

Para ello, introduce este código:

require_once "vendor/autoload.php";

El término “requiere_once” asegura que Composer solo se integre una vez. Cualquier otra cosa podrá provocar un comportamiento imprevisible o errores en el programa. La instalación con Composer habrá finalizado.

Variante 2: Descarga desde GitHub

Los archivos fuente de PHPMailer también pueden descargarse manualmente pulsando el botón “Clonar o descargar” en el repositorio GitHub.

Paso 2. Descomprimir archivos

Si has descargado el código fuente de PHPMailer manualmente, tienes que abrir el archivo ZIP. Para ello, selecciona la ubicación donde deseas instalar PHPMailer. De nuevo, primero debes incluir PHPMailer en tu script. Asumiendo que has descomprimido los archivos de PHPMailer en un directorio llamado PHPMailer, utiliza las siguientes líneas de código:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
/* Clase para tratar con excepciones y errores */
require 'C:\PHPMailer\src\Exception.php';
/* Clase PHPMailer */
require 'C:\PHPMailer\src\PHPMailer.php';
/*Clase SMTP necesaria para conectarte a un servidor SMTP */
require 'C:\PHPMailer\src\SMTP.php';
$email = new PHPMailer(TRUE);

Envío de correos electrónicos con PHPMailer: instrucciones paso a paso

Paso 1. Incluir espacios de nombres

Para acceder al PHPMailer convenientemente, primero asegúrate de que los espacios de los nombres están incluidos correctamente. Las sentencias Use se utilizan para esto, por lo que tu código debe contener las siguientes líneas:

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

Ahora podrás acceder a las clases individuales utilizando el nombre después de la última barra.

Paso 2. Encontrar errores

Aunque PHPMailer es una variante muy fiable para el envío de correos electrónicos, pueden producirse errores de vez en cuando. Para evitar el envío de datos sensibles desde tu servidor de correo a los usuarios en forma de mensaje de error, es recomendable rodear el envío de correos electrónicos con la sentencia Try-Catch:

try {
    // Intentar crear una nueva instancia de la clase PHPMailer
    $mail = new PHPMailer (true);
// (…)
} catch (Exception $e) {
        echo "Mailer Error: ".$mail->ErrorInfo;
}

Paso 3. Autentificación con SMTP

Para utilizar PHPMailer, debes autenticarte a través de SMTP. Para ello, introduce la dirección de tu servidor de correo, el protocolo correspondiente (ya sea TLS/SSL o SMTP) incluyendo el puerto, tu nombre de usuario y tu contraseña. El protocolo y el puerto utilizados dependen de tu proveedor de correo. Los datos del servidor respectivo pueden encontrarse fácilmente en las páginas web de los proveedores de correo.

$mail->isSMTP();
$mail->SMTPAuth = true;
// Datos personales
$mail->Host = "smtp.domain.es";
$mail->Port = "587";
$mail->Username = "nombre.apellido@domain.es";
$mail->Password = "contraseña4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

Paso 4. Introducir el destinatario del correo electrónico

Ahora podrás introducir el destinatario del correo electrónico.

// Remitente
$mail->setFrom('info@example.com', 'name');
// Destinatario, opcionalmente también se puede especificar el nombre
$mail->addAddress('info@example.com', 'name');
// Copia
$mail->addCC('info@example.com');
// Copia oculta
$mail->addBCC('info@example.com', 'name');

Paso 5. Añadir el contenido del correo

Por supuesto, no debe faltar lo más importante: el contenido del correo electrónico. Este contenido suele consistir en un asunto y un texto, que se ofrece tanto en versión HTML como no HTML. Importante: los programas más antiguos no necesariamente pueden manejar el estándar actual HTML5, por lo que puede ser recomendable crear tu correo electrónico utilizando solo HTML.

También puedes enviar archivos adjuntos sin problema con PHPMailer. La función addAttachment te ayuda a hacerlo. Con PHPMailer se pueden enviar tanto imágenes como música, documentos, vídeos o GIFs. También puedes renombrar tus archivos adjuntos con un segundo parámetro opcional que cumple esta función.

$mail->isHTML(true);
// Asunto
$mail->Subject = 'Asunto de tu correo electrónico';
// Contenido HTML
$mail->Body = 'El contenido de tu correo en HTML. Los elementos en <b>negrita</b> también están permitidos.';
$mail->AltBody = 'El texto como elemento de texto simple';
// Agregar archivo adjunto
$mail->addAttachment("/home/user/Desktop/ejemplodeimagen.png", "ejemplodeimagen.png");

Paso 6. Utilizar la codificación de caracteres correcta

En los países de habla española, es aconsejable activar

UTF-8

en PHPMailer debido a los diversos caracteres propios, para que no se produzcan errores de visualización, especialmente cuando se utilizan varios archivos adjuntos. Para ello, añade las siguientes líneas de código a tu script PHP:
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';

Paso 7. Enviar el correo electrónico

En el último paso, solo tienes que enviar el correo electrónico. Para ello, utiliza el comando:

$mail-&gt;send();

Asegúrate de colocar todo el código mostrado aquí hasta esta solicitud de envío en el bloque Try de tu script para que cualquier error sea capturado como se describe.

Un ejemplo de código para enviar un correo electrónico

Aquí se resume de nuevo todo el código que necesitas para enviar un correo (con imagen adjunta) utilizando PHPMailer:

<!--?php</codesnippet-->
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
try {
        // Crear una instancia de la clase PHPMailer
        $mail = new PHPMailer($debug);
        if ($debug) {
                // Emitir un registro detallado de
                $mail->SMTPDebug = PHPMailer\PHPMailer\SMTP::DEBUG_SERVER; }
        }
        // Autentificación vía SMTP
        $mail->isSMTP();
        $mail->SMTPAuth = true;
        // Login
        $mail->Host = "smtp.domain.es";
        $mail->Port = "587";
        $mail->Username = "nombre.apellido@domain.es";
        $mail->Password = "contraseña4321";
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
        $mail->addAttachment("/home/user/Desktop/ejemplodeimagen.png", "ejemplodeimagen.png");
     $mail->CharSet = 'UTF-8';
     $mail->Encoding = 'base64';
        $mail->isHTML(true);
        $mail->Subject = 'Asunto del correo electrónico';
     $mail->Body = 'El texto de tu correo en HTML. Los elementos en <b>negrita</b> también están permitidos.';
     $mail->AltBody = 'El texto como elemento de texto simple';
        $mail->send();
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: ".$mail->ErrorInfo;
}

Servicio de e-mail hosting

Muestra a tus clientes tu profesionalidad con una dirección de e-mail personalizada que coincida con tu dominio.

Seguridad
Antispam incluido
Sin publicidad