définitionAdresse()
C'est là que nous déterminons si le mail est envoyé
à un destinataire en particulier, ou à tous les destinataires...
function definitionAdresse()
{
global $listeDesMails;
$i=0;
foreach ($listeDesMails as $prenom => $adresseMail)
{
++$i;
if ($_POST['choixMail'] == $i)
{
envoiMail($prenom, $adresseMail);
}
}
if ($_POST['choixMail'] == count($listeDesMails)+1)
{
envoiMail("tout le monde", join(', ',$listeDesMails));
}
}
Nous utilisons à nouveau les
variables $listeDesMails et $i
dans cette fonction.
Celle-ci est en deux parties : l'une
gère le mail individuel, l'autre le collectif. La tâche
est à peine rendue plus difficile par la fait que notre tableau
est associatif...
Pour le mail individuel, nous réutilisons
la même boucle foreach() que
dans la fonction optionChoixMail(),
mais cette fois la variable $i ne
nous sert pas à inscrire un numéro d'options, mais
à tester que l'option correspond au numéro en cours.
En effet, tel que nous l'avons écrit, la boucle aura en même
temps le prénom et l'adresse du 1er destinataire, et l'entier
1, puis le 2nd et "2", et ainsi de suite.
Lancer la fonction envoiMail() n'est
donc plus qu'une question de repérage : $_POST['choixMail']
est-il égal à $i ?
Autrement dit, l'entier choisi par l'utilisateur (et donc le destinataire)
correspond-il à l'entier associé au destinataire en
cours ? Si c'est le cas, on donne à la fonction envoiMail()
les arguments $prenom et $adresseMail
de cet entier. Si ce n'est pas le cas... on ne fait rien.
Il faut aussi gérer le cas de
la dernière option : "tout le monde". Celle-ci
est la dernière de notre liste : son entier n'est pas pris
en compte par la boucle foreach().
Nous lui offrons un if() spécifique.
Celui-ci ne fera que vérifier que l'entier choisi par l'utilisateur
est égal au dernier entier de notre liste d'options. Nous
avons ici quatre mails dans notre tableau, l'entier suivant correspondra
donc à "tout le monde". Nous obtenons cet entier
via la fonction count(), qui donne
le nombre d'éléments contenus dans un tableau, auquel
nous ajoutons 1.
Il nous faut enfin extraire l'ensemble des mails de notre liste,
sans les prénoms ni les associations : c'est la fonction
join() qui vient à notre
rescousse, elle permet de rassembler les éléments
d'un tableau en une chaîne, en les séparant par une
chaîne donnée. Etant donné que pour utiliser
plusieurs mails, il faut les séparer par une virgule, nous
choisissons cette option.
Chacun renvoi vers la fonction finale
envoiMail(), avec comme arguments
la dénomination du destinataire, et une chaîne contenant
la ou les adresses.
envoiMail()
Nous avons tout ce dont nous avons besoin pour utiliser la fonction
interne mail() : un ou des destinataires,
et un corps de message.
function envoiMail($nomContact,
$adresse)
{
if (@mail($adresse, "Mail depuis le formulaire de contact",
$_POST['champTexte']))
{
?>
Votre mail a bien été envoyé à <?=$nomContact;?>
(<?=$adresse;?>).
<?
}
else
{
?>Suite à une erreur, votre mail n'a pu
être envoyé. Veuillez recommencer.<?
}
?><br>Voici le contenu du mail: <br><?=$_POST['champTexte'];?><?
}
Nous profitons du fait que la fonction
mail() renvoi true
ou false selon la réussite
de l'envoi, pour informer l'utilisateur du résultat. Pour
autant, nous utilisons l'opérateur @
pour éviter d'afficher un message d'erreur trop violent...
C'est ensuite mail()
(et sa configuration dans le fichier php.ini)
qui prend le relais, à partir du moment où nous lui
fournissons destinataire(s), sujet et corps du mail. Notre fonction
ne fait ensuite qu'afficher un message de confirmation, et les données
envoyées.
Page 1 | 2
| 3
|