PHPMailer
Introducción
En algunos servidores no está disponible la función de PHP mail(). Esta función es cada vez más habitual que esté desactivada en los servidores como medida de seguridad. Normalmente se desactiva por protección contra SPAM, mail spoofing y proxy mail server.
En caso de que cualquiera de las webs alojadas sea vulnerada por un usuario malintencionado, se evitan los riesgos mencionados.
¿Necesitas hospedar la web y el correo de tu dominio? SWHosting puede ayudarte con sus servidores gestionados con SWPanel.
cta:cloud_app_swpanel_smart_d5
La librería de PHPMailer
La librería PHPMailer nos permite, entre otras funcionalidades, establecer una conexión SMTP con un servidor de correo. Este servidor SMTP será quién envíe realmente nuestro correo electrónico.
La web oficial del proyecto en GitHub contiene la documentación con las opciones de instalación y configuración. Enlace a Github: https://github.com/PHPMailer/PHPMailer
Crear cuenta de correo y obtener datos de conexión
Necesitaremos tener una cuenta de correo creada y los datos de conexión. Para este ejemplo necesitaremos: El servidor de correo saliente (Servidor SMTP), usuario y contraseña.
Manual cuenta de correo
Instalación de PHPMailer con composer
Es la opción más fácil y rápida para los usuarios que ya utilicen composer en su proyecto.
Añadir al fichero composer.json:
"phpmailer/phpmailer": "~6.1"
O directamente:
composer require phpmailer/phpmailer
Hay un ejemplo completo de configuración en la página de Github.
Instalación manual de PHPMailer
1.- Descargar la librería de https://github.com/PHPMailer/PHPMailer, click al botón verde de “Clone or download” y “Download ZIP”
2.- Descomprimir el fichero descargado “PHPMailer-master.zip” y renombrar el directorio PHPMailer-master por PHPMailer
3.- Copiar el directorio PHPMailer dentro de nuestro proyecto.
Para verificar que las rutas son correctas, debería existir desde la raíz de nuestro proyecto: /PHPMailer/src/PHPMailer.php
Ejemplo simple de configuración
1.- Guardar el siguiente código en un fichero ejemplo.php
<?php
// Mostrar errores PHP (Desactivar en producción)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Incluir la libreria PHPMailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
// Inicio
$mail = new PHPMailer(true);
try {
// Configuracion SMTP
$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Mostrar salida (Desactivar en producción)
$mail->isSMTP(); // Activar envio SMTP
$mail->Host = 'CONFIGURAR_SERVIDOR_SMTP'; // Servidor SMTP
$mail->SMTPAuth = true; // Identificacion SMTP
$mail->Username = 'CONFIGURAR_USUARIO_SMTP'; // Usuario SMTP
$mail->Password = 'CONFIGURAR_CONTRASEÑA_SMTP'; // Contraseña SMTP
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('[email protected]', 'Tu nombre'); // Remitente del correo
// Destinatarios
$mail->addAddress('[email protected]', 'Nombre del destinario'); // Email y nombre del destinatario
// Contenido del correo
$mail->isHTML(true);
$mail->Subject = 'Asunto del correo';
$mail->Body = 'Contenido del correo <b>en HTML!</b>';
$mail->AltBody = 'Contenido del correo en texto plano para los clientes de correo que no soporten HTML';
$mail->send();
echo 'El mensaje se ha enviado';
} catch (Exception $e) {
echo "El mensaje no se ha enviado. Mailer Error: {$mail->ErrorInfo}";
}
2.- Modificar los parámetros de conexión, el email del remitente y del destinatario donde enviaremos nuestro correo de prueba.
3.- Subir por FTP el directorio PHPMailer y el fichero ejemplo.php a la raíz del directorio público. Para nuestro caso: /datos/web
4.- Ejecutar el ejemplo desde http://tudominio.com/ejemplo.php
Nos mostrará el debug del proceso y si todo ha ido bien habremos recibido el correo electrónico. Si muestra algún error, ya sea de PHP o de conexión SMTP, deberemos depurar el origen del problema.
En producción, recordad desactivar el debug de errores PHP y SMTP
Ejemplo para Wordpress
Para los que tengan una web con Wordpress será más fácil utilizar el plugin WP Mail SMTP
https://es.wordpress.org/plugins/wp-mail-smtp/
Manual específico para este caso
Y recuerda que, si necesitas hospedar la web y el correo de tu dominio, SWHosting puede ayudarte con sus servidores gestionados con SWPanel.
cta:cloud_app_swpanel_smart_d5