Envoi des mails en php

Petit nouveau ! | 5 Messages

26 nov. 2021, 10:40

Bjr
Pour l'envoi des mails en php, la fonction mail de php est dépassé m'a t-on dit. Je me suis penché vers swifmailler et j'apprends que ça mise à jour n'est plus disponible on vaut mieux laisser tomber.
Quel système utiliser aujourd'hui ? Ya t'il un tuto pour ce système ?
Qu'en est-il de phpmailer?
Merci !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9163 Messages

26 nov. 2021, 16:11

PHPmailer est la référence et fonctionne très bien.
Plutôt bonne documentation et plein de tuto trouvable sur Google.
https://github.com/PHPMailer/PHPMailer

Si c'est pour des mails business, alors le mieux c'est de passer par une plateforme d'envoi d'email type Mailjet, Mailchimp, Sendinblue... soit par leur API, soit via PHPmailer tu peux juste paramétrer le SMTP de leur plateforme et tu profites des avantages de PHPmailer avec les fonctionnalités des plateformes, comme le suivi des envois, les vérifications antispam/anti-blacklistage/etc...
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 5 Messages

26 nov. 2021, 17:36

Merci

Mammouth du PHP | 929 Messages

03 déc. 2021, 01:07

La fonction mail() n'est pas dépassée, ya qu'elle pour envoyer des mails, il faut s'avoir s'en servir, tout simplement.
plein de tuto trouvable sur Google.
Dommage que j'utilise Qwant, je vais pas les trouver du coup... :lol:

"sur internet" est plus approprié, inutile de donner de l'importe à un moteur en particulier ;)

Petit nouveau ! | 5 Messages

03 déc. 2021, 09:15

Bjr et merci pour votre réponse.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9163 Messages

03 déc. 2021, 12:26

La fonction mail() n'est pas dépassée, ya qu'elle pour envoyer des mails, il faut s'avoir s'en servir, tout simplement.
Justement, ce n'est pas "tout simplement" qu'on peut envoyer des emails avec la fonction mail() qui respectent les bonnes pratiques, notamment pour la signature DKIM ou pour gérer les entêtes correctement et les particularités des encodages.
Donc oui la fonction mail() est dépassée car il y a d'autres solutions, plus faciles à mettre en œuvre et par conséquent plus fiable.
"sur internet" est plus approprié, inutile de donner de l'importe à un moteur en particulier ;)
Tu as tout à fait raison ! :D
Même si tu en trouveras beaucoup moins sur Qwant !
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 929 Messages

03 déc. 2021, 12:51

Oui, Qwant était un exemple, y'en a plein d'autres ;)

Je comprends pas le terme "dépassée" alors, pour moi quelque chose de dépassé c'est quelque chose qui est vieux, où il y a eu d'autres inventions qui prennent le dessus, hors la fonction mail() est la base pour envoyer des mails, je ne suis peut être pas au courant qu'il est possible d'envoyer des mails avec autre chose que mail() ...

Petit nouveau ! | 5 Messages

03 déc. 2021, 13:47

Bjr
Merci pour votre disponibilité

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9163 Messages

03 déc. 2021, 22:50

je ne suis peut être pas au courant qu'il est possible d'envoyer des mails avec autre chose que mail() ...
C'est possible avec des API, ou en communiquant directement avec un serveur SMTP.
La librairie phpmailer permet justement de préparer proprement un mail (et surtout simplement) qui sera soit envoyé soit via la fonction mail() soit directement à un serveur SMTP tiers.
On peut aussi envoyer un mail via une API et un service tiers.

L'usage de la fonction mail() n'est pas obsolète mais si on veut être sûr que son mail soit reçu par le plus grand nombre (et pas en spam), il faut avoir beaucoup de compétences pour utiliser la fonction mail() sans librairie additionnelle, et au final ça complexifie beaucoup le code pour envoyer un simple mail, alors qu'il existe des librairies clé-en-main qui permettent en 3 lignes d'envoyer un mail parfaitement conforme.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 929 Messages

03 déc. 2021, 23:35

Merci pour ton retour, je ne savais pas et je confirme qu'il est difficile de configurer la fonction mail pour pas tomber en SPAM (j'ai réussi à m'arracher les cheveux et me casser les dents)

ViPHP
ViPHP | 5922 Messages

11 déc. 2021, 17:44

L'usage de la fonction mail() n'est pas obsolète mais si on veut être sûr que son mail soit reçu par le plus grand nombre (et pas en spam), il faut avoir beaucoup de compétences pour utiliser la fonction mail() sans librairie additionnelle, et au final ça complexifie beaucoup le code pour envoyer un simple mail, alors qu'il existe des librairies clé-en-main qui permettent en 3 lignes d'envoyer un mail parfaitement conforme.
Tu as raison @rthur de corriger parce que effectivement on ne peut pas absolument pas dire que la fonction mail() soit dépassée. Par contre tu as raison de souligner ses limitations.

La fonction mail() génère et émet des messages via l'appel au programme sendmail (sous Linux/Unix). Il s'agit de la méthode traditionnelle d'envoi de mails qui fait émettre le mail par le MTA local (en d'autres termes le serveur mail), et qui est géré par la quasi-totalité des serveurs dans une installation standard.

Seulement, au fil des années, l'environnement mail a profondément évolué, et émettre un mail de manière à ce qu'il soit accepté demande énormément de travail de configuration et mise en place (DKIM, SPF, reverse PTR, etc comme l'indiquait @rthur). C'est pour cette raison qu'utiliser la fonction PHP mail() sans avoir pris soin de configurer son MTA est la garantie de voir son mail passer en spam chez la plupart des destinataires.

En revanche, si on a effectivement configuré son environnement, la méthode PHP mail() est tout à fait valide et est la méthode simple et standard pour émettre des mail.

Pour ma part, les applications que je développe ou que je déploie utilisent préférentiellement la méthode mail(), parce que sur les infrastructures que je gère, je mets en place systématiquement :
* Un serveur mail central (postfix+opendkim) qui assure le contrôle, la signature et l'émission des mails vers les destinataires externes, et déclaré correctement dans le DNS.
* Sur chaque serveur applicatif, un MTA de type smarthost (nullmailer) qui relaie tous les mails vers le serveur central. Aucun de mes serveurs applicatifs n'a le droit d'émettre de mails sans passer par le serveur mail central (qui dans mon cas est géré par moi mais qui pourrait tout autant être un fournisseur SMTP externe).

Cette architecture est parfaitement fonctionnelle, mais effectivement demande du travail d'administration système. Ça ne peut pas être plug'n play.

En ce sens, la fonction PHP mail() n'est pas dépassée mais doit être utilisée pour ce qu'elle est, et en connaissance de ses limitations.

Petit nouveau ! | 5 Messages

11 déc. 2021, 20:17

Bsr,
Merci pour votre réponse. Quand on développe en local (formulaire de contact ou autre) on s'assure que tout va bien, PHP envoi généralement un message de confirmation. Ma question est donc de savoir en mettant ce formulaire en ligne chez un hébergeur donné qui gère la fonction mail de php comment être donc sur que le message venant de mon site n'ira pas dans les spams?
Merci une fois de plus de m'edifier

ViPHP
ViPHP | 5922 Messages

12 déc. 2021, 00:02

Bsr,
Merci pour votre réponse. Quand on développe en local (formulaire de contact ou autre) on s'assure que tout va bien, PHP envoi généralement un message de confirmation. Ma question est donc de savoir en mettant ce formulaire en ligne chez un hébergeur donné qui gère la fonction mail de php comment être donc sur que le message venant de mon site n'ira pas dans les spams?
Merci une fois de plus de m'edifier
D'un point de vue général, s'agissant d'un hébergement mutualisé, il est de la responsabilité de l'hébergeur d'assurer que les mails émis via la fonction PHP mail() sont envoyés correctement parce que vous ne contrôlez pas le serveur.

Cela dit cela dépend de plusieurs choses :
* S'il s'agit d'un domaine dédié ou bien d'un sous-domaine fourni par l'hébergeur
* Si l'hébergeur contrôle ou non le domaine (DNS, mails, etc)
Dans le cas où il s'agit d'un domaine dédié et où l'hébergeur ne contrôle pas le domaine, il ne pourra pas appliquer dans le DNS les enregistrements nécessaires pour garantir la réputation mail et les mails auront plus de probabilité d'atterrir dans les SPAM.

Par ailleurs, dans le cas d'un hébergement mutualisé, les mails de plusieurs sites sont émis par les mêmes adresses IP. C'est un facteur important de réputation vis à vis des destinataires, car dans le cas où l'un des sites hébergés par cet hébergeur génère du SPAM, cela impactera la réputation de tous les sites hébergés.