Base de connaissances

1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !

Utiliser PHPMailer sur Infomaniak

Mise à jour 30/06/2026

Ce guide explique comment utiliser PHPMailer avec les hébergements Web Infomaniak pour envoyer des e-mails depuis un site Web.

 

⚠ ATTENTION ⚠ 

Infomaniak garantit la conformité de ses services aux protocoles standards (IMAP, S3, etc.) mais ne fournit pas d'aide supplémentaire pour les services ou logiciels externes, car leur configuration peut changer selon le fournisseur ou l'éditeur. Ce guide est donc fourni à titre indicatif et sa mise en place reste sous votre responsabilité (réf.: Politique de support / Art. 11.9 des CGU). Si besoin, une personne qualifiée peut vous accompagner. 


 

Préambule

  • PHPMailer est une librairie PHP permettant de créer et d'envoyer des e-mails depuis un site Web, notamment via SMTP.
  • Elle permet notamment d'envoyer des messages au format HTML, d'ajouter une version texte alternative, de gérer les pièces jointes et d'utiliser une authentification SMTP.
  • Pour un envoi authentifié via SMTP, l'environnement PHP utilisé par le site doit être compatible avec une connexion chiffrée récente, notamment TLS 1.2 ou supérieur.
    • Une version trop ancienne de PHP ou de la librairie OpenSSL utilisée par PHP peut provoquer une erreur de connexion ou d'authentification, même si l'adresse mail et le mot de passe sont corrects.
    • N'utilisez pas PHP 5.3/5.4 pour ce type d'envoi ; utilisez une version de PHP récente et maintenue.
  • Avec l'envoi SMTP authentifié, l'adresse utilisée comme expéditeur doit correspondre à l'adresse mail utilisée pour l'authentification SMTP.

 

Installer PHPMailer

Pour utiliser PHPMailer, installez la librairie dans les fichiers de votre site Web.

  1. Téléchargez PHPMailer depuis son dépôt officiel ou installez-la avec Composer si votre projet l'utilise.
  2. Copiez les fichiers de PHPMailer dans un répertoire de votre site Web par FTP.
  3. Chargez les fichiers nécessaires dans votre script PHP, en adaptant le chemin selon l'emplacement choisi:

    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';

 

Configurer l'envoi SMTP avec Infomaniak

Utilisez les paramètres SMTP authentifiés suivants:

  • Serveur SMTP: mail.infomaniak.com
  • Port: 465
  • Chiffrement: SMTPS / SSL-TLS
  • Authentification: obligatoire
  • Nom d'utilisateur: l'adresse mail complète
  • Mot de passe: le mot de passe de l'adresse mail utilisée

Exemple de configuration complète:

<?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);
}

Si votre application impose l'utilisation du port 587, utilisez STARTTLS:

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

 

Vérifier la version de PHP et la compatibilité TLS

L'envoi SMTP authentifié nécessite une connexion chiffrée récente. Si le site utilise une version trop ancienne de PHP, par exemple PHP 5.3, ou une librairie OpenSSL trop ancienne, PHPMailer peut échouer avant ou pendant l'authentification. Les erreurs peuvent alors être trompeuses, par exemple:

  • SMTP connect() failed
  • Could not authenticate
  • stream_socket_enable_crypto()
  • une erreur d'authentification alors que le mot de passe est correct

Dans ce cas, vérifiez les points suivants:

  1. la version de PHP utilisée par le site Web;
  2. la version d'OpenSSL utilisée par PHP;
  3. la version de PHPMailer utilisée par votre projet;
  4. la correspondance entre le port SMTP et le chiffrement choisi.

Pour une configuration fiable, utilisez une version récente de PHP, compatible avec TLS 1.2 ou supérieur, ainsi qu'une version actuelle de PHPMailer. Prenez connaissance de ces guides si nécessaire:

 

Résoudre une erreur Sender mismatch

L'erreur Sender mismatch SMTP code: 550 Additional SMTP info: 5.7.1 peut se produire lorsque l'adresse utilisée comme expéditeur ne correspond pas à l'adresse mail utilisée pour l'authentification SMTP. Exemple à éviter:

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

Dans cet exemple, le script s'authentifie avec sender@domain.xyz, mais tente d'envoyer le message avec une autre adresse d'expéditeur.

Utilisez la même adresse mail pour l'authentification SMTP et pour l'expéditeur:

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

Le nom d'expéditeur peut être personnalisé, mais l'adresse mail doit rester cohérente avec le compte SMTP utilisé.

Cas d'un formulaire de contact

Si un visiteur renseigne son adresse mail dans un formulaire, ne l'utilisez pas comme adresse d'expéditeur du message. Utilisez l'adresse mail authentifiée comme expéditeur, puis ajoutez l'adresse du visiteur comme adresse de réponse.

Exemple:

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

Cette configuration permet de répondre au visiteur depuis votre logiciel de messagerie sans envoyer le message avec une adresse d'expéditeur non autorisée.

 

Activer le mode debug temporairement

En cas d'erreur, activez temporairement le mode debug de PHPMailer afin d'obtenir plus de détails sur la connexion SMTP:

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

Désactivez ce mode après vos tests afin de ne pas afficher d'informations techniques aux visiteurs du site.

 

En savoir plus

Lien vers cette FAQ: https://faq.infomaniak.com/576


Cette FAQ a été utile?