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

4/5 (61 avis)

Vue 41 770 fois - Téléchargée 50 095 fois

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

Ajouter un commentaire Commentaires
donperez Messages postés 1 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 15 février 2011
10 févr. 2011 à 19:33
BS
BS
Je viens de mettre en ligne sur mon serveur le formulaire en question et voici les erreurs signalés.
-------------------------oooooo-----------------------
+OK POP3 ready <1513414009.1297360860@pop1-g25.free.fr>

Warning: copy(../PHPMail_TempUpload/Image-38.jpg) [function.copy]: failed to open stream: No such file or directory in /public_html/Formu_piece_jointe/PHPFormMail.php on line 102
Class Mail, method attach : file ../PHPMail_TempUpload/Image-38.jpg can't be found
--------------------------oooooo-------------------------

Donc si quelqu'un veux bien me donner un coup de main pour résoudre le problème, moi je me perds pas mal dans les entrailles du code « php »

Un grand merci
Cordialement
Perez
cs_Stormo Messages postés 1 Date d'inscription lundi 28 décembre 2009 Statut Membre Dernière intervention 20 avril 2010
20 avril 2010 à 16:27
Hello,

je suis un peu nul en codes sources...
Pour la version ".htm" où faut-il mettre l'adresse email du destinataire du formulaire ?
wlperso Messages postés 9 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 20 septembre 2010
23 avril 2009 à 11:25
Bonjour,

je ne connais pas grand chose à PHP et au fonctionnements SMTP ... je suis très débutant.
J'essaie de configurer le script pour fonctionner sous hébergement gratuit iFrance + envoi avec SMTP GMAIL, mais vraiment sans succès ; je n'arrive même pas à décomposer pour débugger le fonctionnement.
Bref un vrai nul !
Quelqu'un peut-il m'aider ?
Merci d'avance
horinal Messages postés 11 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 18 février 2011
2 févr. 2009 à 12:14
Bonjour
J'aimerais demande un aide s'il vous plait

je suis un débutant du code, membre d'un groupe de bénévole en Afrique on viens de créer notre site internet d'association et on aimera qu'on puisse permettre a nos visiteur d'envoyer un pièces joints directement sur nos formulaire.
si il y a une personne de bonne volonte veuillez s'il vous nous aide. notre e-mail: info@horinal.com et notre site internet www.horinal.com details sur le formulaire
Nom:
Prénom:
Ville:
Pays:
Tél:
Sujet:
Message:
et Pièeces Joints:

merci de votre aide veuillez directement nous envoyer le code sur info@horinal.com / info@groupthefuture.com ou horinal@live.com
merci
lcomb Messages postés 11 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 10 mai 2008
5 juil. 2008 à 18:36
Salut les gars je connais bien ce code j ai une question
je me suis fais un formulaire en local qui renvois sur un phpform sur mon site en post ca marche tout bien sauf le fichier joint je crois c est par ce que je suis en local et je post sur mon site est ce que c est ca ? C'est de la logique pure .Comment faire pour develloper en local avec une connection internet ,est ce en changeant l adresse de l uplaod ca marcherai ? je vous laisse j ai un rendez vous si je cherche un gars qui devellope en solution mail pour programmer emsemble merci a plus
Afficher les 61 commentaires

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.