Formulaire permettant d'envoyer un e-mail (avec pièces jointes) depuis une page

Description

Ce script est, en fait, celui de LiTtleBuBu (http://www.phpcs.com/code.aspx?ID=22574) que j'ai mis à jour.

Certains problèmes ont été résolus et des nouveautés ont été rajoutées.

- La classe 'Mail' de LiTtleBuBu, qui faisait partie du fichier formail.php, a été séparée des paramêtres spécifiques ainsi que du code qui exécute l'envoi. Ceci permet d'y voir plus clair (d'un côté le code de la classe 'Mail', de l'autre le code spécifique du développeur).

- Par défaut, il n'y a pas de test stricte de l'adresse de l'expéditeur (l'utilisateur lambda!). En fait, un test se fait sur le serveur mail supposé de l'utilisateur et, si le serveur n'est pas atteignable, le sujet du mail que reçoit le destinataire (dans mon cas, moi-même!) est sanctionné d'un '[Adresse (exp@domaine_inconnu.net) non reconnue!]'. Quant à l'utilisateur, il reçoit un mail lui confirmant l'envoi.
Donc, même si le serveur de l'utilisateur n'est pas reconnu, l'envoi s'effectue quand même; ce qui permet à l'expéditeur possédant une adresse chez caramail (qui est en fait lycos!) de pouvoir m'envoyer des mails... ... Dans le cas où l'on veut faire le psychopathe, il suffit modifier le fichier 'PHPFormMail.php' afin de tester si la fonction 'checkExp' retourne 'vrai' avant d'envoyer l'e-mail. On ne reçoit donc plus les mails des serveur non reconnus... Mais ceci est à double tranchant, car on ne reçoit plus les mails des serveurs reconnus, mais qui refusent les accès telnet. Il faut choisir!

- D'après plusieurs forum, il paraît que des robots s'attaquent à de tels formulaires en essayant de placer, dans un des champs du formulaire, l'en-tête d'un autre mail dont la copie conforme cachée est destinée à beaucoup d'autres personnes.
Le problème que pose ce genre de robot est que l'on peut vite voir son nom de domaine banit car assimilé à un spamer! Ainsi, un test à été rajouté pour ne pas envoyer de mail si, dans les champs provenant du formulaire, il apparaît des mot-clés d'un header.

- Etc. (je vous laisse découvrir les autres menus changements!)

Encore une fois, ce code est repris de celui de LiTtleBuBu (http://www.phpcs.com/code.aspx?ID=22574); je vous encourage donc à aller y jeter un coup d'oeil afin de mieux le comprendre.

Pour finir, je dirai que le formulaire html reste très basic; en ce sens qu'il faudrait encore lui rajouter du code (client-side, ex: JavaScript) afin que le formulaire ne puisse être posté s'il les champs ne répondent pas à des critères spécifiques (comme la syntaxe de l'adresse de l'expéditeur par exemple). J'utilise déjà un 'petit' script pour cela; je pense qu'il serait bon que de le mettre on-line.

Conclusion :


Normalement, le code de la classe 'Mail' est prévu pour permettre l'envoi de multiple pièces jointes. Toutefois, le formulaire html ainsi que le code dans le fichier PHPFormMail.php n'en n'utilise qu'un seul...
Il n'est pas difficile d'imaginer un code un peu plus dynamique pour gérer un nombre arbitraire de pièces jointes!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.