Guies i tutorials

Centenars de tutorials i guies pas a pas curosament escrits per el nostre equipo de suport.

PHPMailer

Introducció

En alguns servidors la funció de PHP mail() no està disponible. Aquesta funció és cada vegada més habitual que estigui desactivada als servidors com a mesura de seguretat. Normalment es desactiva per protecció contra SPAM, mail spoofing i proxy mail server. En cas que qualsevol de les webs allotjades sigui vulnerada per un usuari malintencionat, s'eviten els riscos esmentats.

Necessites allotjar la web i el correu del teu domini? SWHosting et pot ajudar amb els seus servidors gestionats amb SWPanel.

cta:cloud_app_swpanel_smart_d5

La llibreria de PHPMailer

La llibreria PHPMailer ens permet, entre d'altres funcionalitats, establir una connexió SMTP amb un servidor de correu. Aquest servidor SMTP serà qui enviï realment el nostre correu electrònic.

El web oficial del projecte a GitHub conté la documentació amb les opcions d'instal·lació i configuració. Enllaç a Github: https://github.com/PHPMailer/PHPMailer

enter image description here

enter image description here

Crear compte de correu i obtenir dades de connexió

Necessitarem tenir un compte de correu creat i les dades de connexió. Per aquest exemple necessitarem: El servidor de correu sortint (Servidor SMTP), usuari i contrasenya.

Manual compte de correu

Instal·lació de PHPMailer amb composer

És l'opció més fàcil i ràpida per als usuaris que ja utilitzen composer en el seu projecte. Afegir al fitxer composer.json:

"phpmailer/phpmailer": "~6.1"

O directament: composer requereix phpmailer/phpmailer

Hi ha un exemple complet de configuració a la pàgina de Github.

Instal·lació manual de PHPMailer

1.- Descarregar la llibreria de https://github.com/PHPMailer/PHPMailer, click al botó verd de “Clone or download” i “Download ZIP”

2.- Descomprimir el fitxer descarregat “PHPMailer-master.zip” i reanomenar el directori PHPMailer-master per PHPMailer

3.- Copiar el directori PHPMailer dins el nostre projecte. Per verificar que les rutes són correctes, hauríeu d'existir des de l'arrel del nostre projecte: /PHPMailer/src/PHPMailer.php

Exemple simple de configuració

1.- Guardar el següent codi en un fitxer exemple.php

<?php
// Mostrar errors PHP (Desactivar en producció)
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Incloure lla 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';

// Inici
$mail = new PHPMailer(true);

try {
    // Configuracio SMTP
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                         // Mostrar sortida(Desactivar en producció)
    $mail->isSMTP();                                               // Activar enviament SMTP
    $mail->Host  = 'CONFIGURAR_SERVIDOR_SMTP';                     // Servidor SMTP
    $mail->SMTPAuth  = true;                                       // Identificacio SMTP
    $mail->Username  = 'CONFIGURAR_USUARIO_SMTP';                  // Usuari SMTP
    $mail->Password  = 'CONFIGURAR_CONTRASEÑA_SMTP';	          // Contrasenya SMTP
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port  = 587;
    $mail->setFrom('[email protected]', 'El teu nom');                // Remitent del correu

    // Destinataris
    $mail->addAddress('[email protected]', 'Nom del destinari');  // Email i nom del destinatari

    // Contingut del correu
    $mail->isHTML(true);
    $mail->Subject = 'Assumpte del correu';
    $mail->Body  = 'Contingut del correu <b>en HTML!</b>';
    $mail->AltBody = 'Contingut del correu en text pla per als clients de correu que no suportin HTML';
    $mail->send();
    echo 'El missatge s'ha enviat';
} catch (Exception $e) {
    echo "El missatge no s'ha enviat. Mailer Error: {$mail->ErrorInfo}";
}

2.- Modificar els paràmetres de connexió, l'email del remitent i del destinatari on enviarem el nostre correu de prova.

3.- Pujar per FTP el directori PHPMailer i el fitxer exemple.php a l'arrel del directori públic. Pel nostre cas: /dades/web

4.- Executar l'exemple des de http://tudominio.com/exemple.php Ens mostrarà el debug del procés i si tot ha anat bé haurem rebut el correu electrònic. Si es mostra algun error, ja sigui de PHP o de connexió SMTP, haurem de depurar l'origen del problema.

En producció, recorda desactivar el debug d'errors PHP i SMTP

Exemple per a Wordpress

Per als que tinguin una web amb Wordpress serà més fàcil utilitzar el connector WP Mail SMTP https://es.wordpress.org/plugins/wp-mail-smtp/

Manual específic per aquest cas

I recorda que, si necessites allotjar la web i el correu del teu domini, SWHosting et pot ajudar amb els seus servidors gestionats amb SWPanel.

cta:cloud_app_swpanel_smart_d5