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.