Base di conoscenze

1 000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!

Utilizzare PHPMailer su Infomaniak

Aggiornamento 30/06/2026

Questa guida spiega come utilizzare PHPMailer con gli hosting web di Infomaniak per inviare e-mail da un sito web.

 

⚠ ATTENZIONE ⚠

Infomaniak garantisce la conformità dei propri servizi ai protocolli standard (IMAP, S3, ecc.) ma non fornisce assistenza aggiuntiva per servizi o software esterni, poiché la loro configurazione può variare a seconda del fornitore o dell'editore. Questa guida è quindi fornita a titolo indicativo e la sua implementazione rimane sotto la vostra responsabilità (rif.: Politica di supporto / Art. 11.9 delle Condizioni Generali d'Uso). Se necessario, un professionista qualificato può assistervi.


 

Introduzione

  • PHPMailer è una libreria PHP che consente di creare e inviare e-mail da un sito web, in particolare tramite SMTP.
  • Consente, in particolare, di inviare messaggi in formato HTML, aggiungere una versione di testo alternativa, gestire gli allegati e utilizzare l'autenticazione SMTP.
  • Per un invio autenticato tramite SMTP, l'ambiente PHP utilizzato dal sito deve essere compatibile con una connessione crittografata recente, in particolare TLS 1.2 o superiore.
    • Una versione troppo vecchia di PHP o della libreria OpenSSL utilizzata da PHP può causare un errore di connessione o di autenticazione, anche se l'indirizzo e-mail e la password sono corretti.
    • Non utilizzare PHP 5.3/5.4 per questo tipo di invio; utilizzare una versione di PHP recente e supportata.
  • Con l'invio SMTP autenticato, l'indirizzo utilizzato come mittente deve corrispondere all'indirizzo email utilizzato per l'autenticazione SMTP.

 

Installare PHPMailer

Per utilizzare PHPMailer, installa la libreria nei file del tuo sito web.

  1. Scarica PHPMailer dal suo repository ufficiale o installala con Composer, se il tuo progetto lo utilizza.
  2. Copia i file di PHPMailer in una directory del tuo sito web tramite FTP.
  3. Carica i file necessari nel tuo script PHP, adattando il percorso in base alla posizione scelta:

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    
    require **DIR** . '/PHPMailer/src/Exception.php';
    require **DIR** . '/PHPMailer/src/PHPMailer.php';
    require **DIR** . '/PHPMailer/src/SMTP.php';

 

Configurare l'invio SMTP con Infomaniak

Utilizza i seguenti parametri SMTP autenticati:

  • Server SMTP: mail.infomaniak.com
  • Porta: 465
  • Crittografia: SMTPS / SSL-TLS
  • Autenticazione: obbligatoria
  • Nome utente: l'indirizzo email completo
  • Password: la password dell'indirizzo email utilizzato

Esempio di configurazione completa:

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require **DIR** . '/PHPMailer/src/Exception.php';
require **DIR** . '/PHPMailer/src/PHPMailer.php';
require **DIR** . '/PHPMailer/src/SMTP.php';

$mail = new PHPMailer(true);

try {
// Configuration SMTP
$mail->isSMTP();
$mail->Host       = 'mail.infomaniak.com';
$mail->SMTPAuth   = true;
$mail->Username   = '[sender@domain.xyz](mailto:sender@domain.xyz)';
$mail->Password   = 'mot_de_passe_de_l_adresse_mail';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port       = 465;
$mail->CharSet    = 'UTF-8';

```
// Expéditeur
// L'adresse doit correspondre à celle utilisée pour l'authentification SMTP.
$mail->setFrom('sender@domain.xyz', 'Nom du site');

// Destinataire
$mail->addAddress('recipient@example.com');

// Adresse de réponse facultative
$mail->addReplyTo('sender@domain.xyz', 'Nom du site');

// Contenu du message
$mail->isHTML(true);
$mail->Subject = 'Message envoyé depuis le site';
$mail->Body    = '<p>Contenu HTML du message.</p>';
$mail->AltBody = 'Contenu texte du message.';

$mail->send();
echo 'Message envoyé';
```

} catch (Exception $e) {
echo 'Le message n’a pas pu être envoyé. Erreur: ' . htmlspecialchars($mail->ErrorInfo);
}

Se la tua applicazione richiede l'utilizzo della porta 587, utilizza STARTTLS:

$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 587;

 

Verificare la versione di PHP e la compatibilità TLS

L'invio SMTP autenticato richiede una connessione crittografata recente. Se il sito utilizza una versione troppo vecchia di PHP, ad esempio PHP 5.3, o una libreria OpenSSL troppo vecchia, PHPMailer potrebbe fallire prima o durante l'autenticazione. Gli errori potrebbero quindi essere fuorvianti, ad esempio:

  • SMTP connect() failed
  • Could not authenticate
  • stream_socket_enable_crypto()
  • un errore di autenticazione nonostante la password sia corretta

In questo caso, verificare i seguenti punti:

  1. la versione di PHP utilizzata dal sito web;
  2. la versione di OpenSSL utilizzata da PHP;
  3. la versione di PHPMailer utilizzata dal progetto;
  4. la corrispondenza tra la porta SMTP e la crittografia scelta.

Per una configurazione affidabile, utilizzare una versione recente di PHP, compatibile con TLS 1.2 o superiore, e una versione aggiornata di PHPMailer. Consultare le seguenti guide, se necessario:

 

Risolvere un errore di mancata corrispondenza del mittente

L'errore Sender mismatch SMTP code: 550 Additional SMTP info: 5.7.1 può verificarsi quando l'indirizzo utilizzato come mittente non corrisponde all'indirizzo email utilizzato per l'autenticazione SMTP. Ecco un esempio da evitare:

$mail->Username = 'sender@domain.xyz';
$mail->setFrom('another-address@domain.xyz', 'Nom du site');

In questo esempio, lo script si autentica con sender@domain.xyz, ma tenta di inviare il messaggio con un indirizzo mittente diverso.

Utilizzare lo stesso indirizzo email per l'autenticazione SMTP e per il mittente:

$mail->Username = 'sender@domain.xyz';
$mail->setFrom('sender@domain.xyz', 'Nom du site');

Il nome del mittente può essere personalizzato, ma l'indirizzo email deve rimanere coerente con l'account SMTP utilizzato.

Caso di un modulo di contatto

Se un visitatore inserisce il proprio indirizzo email in un modulo, non utilizzarlo come indirizzo mittente del messaggio. Utilizzare l'indirizzo email autenticato come mittente e aggiungere l'indirizzo del visitatore come indirizzo di risposta.

Esempio:

$mail->Username = 'sender@domain.xyz';
$mail->setFrom('sender@domain.xyz', 'Formulaire du site');
$mail->addReplyTo($email_visiteur);

Questa configurazione consente di rispondere al visitatore dal proprio software di posta elettronica senza inviare il messaggio con un indirizzo mittente non autorizzato.

 

Attivare temporaneamente la modalità di debug

In caso di errori, attivare temporaneamente la modalità di debug di PHPMailer per ottenere maggiori dettagli sulla connessione SMTP:

$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';

Disattivare questa modalità dopo i test per evitare di visualizzare informazioni tecniche agli utenti del sito.

 

Per saperne di più


Questa FAQ è stata utile?