Prestashop logo, Visiter page d'accueil

Troubleshoot : Mails

-

Problème avec la fonction mail() en PHP

La fonction mail() nécessite l'utilisation de son cinquième paramètre pour forcer l'expéditeur du courrier (FROM).

Généralement, l'expéditeur est défini par les en-têtes dans le quatrième paramètre :

$to = "[email protected]";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: [email protected]\\r\\n";

mail($to, $subject, $txt, $headers);

La fonction mail() appelle ensuite l'outil système sendmail. Sur notre infrastrusture, sendmail ne semble pas interpréter l'en-tête From et tente d'envoyer le courrier avec l'adresse root@[domaine de l'environnement].localdomain.

Nous pouvons forcer sendmail à utiliser l'expéditeur souhaité en définissant le cinquième paramètre de la fonction mail avec cette valeur :

$to = "[email protected]";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: [email protected]\\r\\n";

mail($to, $subject, $txt, $headers, '[email protected]');

 

Problème avec TLS lors de la configuration du serveur SMTP personnalisé

Vous pouvez passer de TLS à SSL.

Sur les anciennes versions de PrestaShop, la version TLS requise par SwiftMailer ne semble pas correspondre à celle définie dans l'environnement.

Si le serveur SMTP est Gmail par exemple, vous pouvez passer de TLS avec le port 587 à SSL avec le port 465.

 

Recommandations en matière d'e-mails

Privilégiez l'utilisation d'une solution e-mail tierce dédiée.

Si vous avez besoin d'envoyer des e-mails directement depuis votre hébergeur, il est recommandé d'utiliser un outil tel que Swift Mailer ou Symfony Mailer. PrestaShop utilise Swift Mailer. Ces outils ne dépendent pas de la fonction mail() en PHP mais utilisent directement sendmail.

Il est fortement recommandé d'utiliser une solution e-mail tierce dédiée comme mailgun, mailjet, sendinblue, MailChimp, etc.

Partager

L'article vous a-t-il été utile ?