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 = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com\\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 = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com\\r\\n";
mail($to, $subject, $txt, $headers, '-fwebmaster@example.com');
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.
Commentaires
0 commentaire
Cet article n'accepte pas de commentaires.