Trucs et Astuces wHo-et-Be

cliquez pour 
ouvrir le menu
Développement Web > Formulaires de mail
Lorsque vous voulez créer un formulaire qui envoie un mail...
voici quelques conseils et règles :
Si vous voulez juste un lien pour envoyer un mail :

L'ACTION du lien est : " mailto:email@provider.com "
vous pouvez compléter la ligne avec :
" ...?subject=sujet " pour que le mail possède un sujet pré-rempli.
" ...&body=ligne1%0Aligne2 " pour que le mail possède un texte pré-rempli.

%0A (zéro-A) c'est un retour à la ligne dans le texte

Pour envoyer le mail à plusieurs personnes, il faut mettre un point-virgule entre les mails des destinataires : " mailto:email1@provider.com;email2@provider.com "
Ce qui nous donne en final :
<A HREF="mailto:email@provider.com?subject=sujet du message&body=corps du message">Envoyer un mail</A>
Exemple : Envoyer un mail

Pour afficher un formulaire avec plusieurs champs à remplir, les points importants sont :
Le formulaire doit contenir TOUS les champs sinon ils ne seront pas envoyés :
les éléments qui composent le formulaire doivent se trouver ENTRE les balises <FORM> et </FORM>
L'ACTION du formulaire est : " mailto:email@provider.com "
avec une commande " POST " ; vous pouvez compléter la ligne avec
" ...?subject=sujet " pour que le mail possède un sujet pré-rempli.
Pour envoyer le mail à plusieurs personnes, il faut mettre un point-virgule entre les mails des destinataires : " mailto:email1@provider.com;email2@provider.com "
ATTENTION, il faut ajouter dans l'action un paramètre pour dire qu'on envoie un mail texte : ENCTYPE="text/plain" (faire cette manip à la main souvent)
N'oubliez pas la balise </FORM> à la fin

Les champs à remplir :
affiche un champ texte d'une longueur de 40 caractères (nommé NOM ) :
<INPUT TYPE="TEXT" SIZE="40" NAME="NOM">
affiche un champ texte de 10 lignes et 40 caractères de large (nommé MESSAGE) :
<TEXTAREA NAME="MESSAGE" ROWS="10" COLS="40">Texte pré-rempli</TEXTAREA>
affiche le bouton pour envoyer le formulaire (avec ENVOYER écrit sur le bouton) :
<INPUT TYPE="SUBMIT" VALUE="ENVOYER">

Ce qui nous donne en final :
<FORM METHOD="post" ACTION="mailto:email@provider.com?subject=sujet" ENCTYPE="text/plain">
<INPUT TYPE="TEXT" SIZE="40" NAME="NOM">
<TEXTAREA NAME="MESSAGE" ROWS="3" COLS="40">Texte pré-rempli</TEXTAREA>
<INPUT TYPE="SUBMIT" VALUE="ENVOYER">
</FORM>
NOM :
MESSAGE :

Confirmation d'envoi ?
Etant donné que le mail est envoyé à partir d'une commande standard (mailto:), on ne peut pas savoir si :
- l'utilisateur a un logiciel de messagerie installé
- l'utilisateur a bien envoyé le mail
Ce qui fait qu'il ne sert à rien d'afficher une page de remerciement genre "merci de votre mail, on va vous répondre" car le mail n'est peut être pas parti.
Si vous voulez qq chose comme ça, un peu plus d'interactivité, quoi.... il vous faut un script sur le serveur (en perl, php3, ...) qui analyse, envoie le mail et retourne une page de confirmation ; mais c'est pas la même chose.
sinon, si vous voulez vraiment afficher quelque chose, regardez par ici.

Champs obligatoires :
Continuons... vous avez des champs que vous voulez rendre obligatoire à la saisie ; avec un script sur le serveur, vous pouvez contrôller et renvoyer une page d'erreur. Ici, on ne peut pas alors il faut ajouter un peu de Javascript pour faire les contrôles en local avant d'envoyer.
dans la ligne de commande, on va ajouter l'appel à une fonction de vérification:
<FORM ... name="F" onSubmit="return check()">
cette fonction check, il suffit de la mettre entre les balises <HEAD> et </HEAD>
<SCRIPT language="JavaScript">
!--
function check() {
  if (document.F.email.value == "") {
    alert("Email obligatoire.\n");
    return false;
  }
  return true;
}
// -->
</SCRIPT>
- On a donné un nom au formulaire (ici, F). Attention, les majuscules / minuscules sont importantes.

- le champ que l'on teste a comme nom " email".

-> Le test est simple : si la valeur du champ est rien (""), retourner Faux, comme ça le mail n'est pas envoyé.
Ce qui nous donne en version complète :
<FORM METHOD="post"
ACTION="mailto:email@provider.com?subject=sujet"
NAME="F" onSubmit="return check()"
ENCTYPE="text/plain">

  visites   Yahoo Me!ICQ Me!Skype Me!MSN Live Messenger Me! Accueil