Bonjour,

J'essaie de mettre en place un formulaire d'envoi de mail un peu compliqué.

Principe :

L'expéditeur peut choisir un ou plusieurs destinataires pré-définis dans une base MySQL .
Une liste des destinataires potentiels est affichée ; en face de chaque nom figure une checkbox.

(Pour la suite, le script devra donner la possibilité d'adresser un mail à un destinataire hors-liste, d'envoyer une copie cachée (ou plusieurs), de joindre un fichier, d'archiver les mails envoyés dans la bdd, de faire du bon café... mais chaque chose en son temps !)

Je ne sais pas comment dire à la fonction mail de prendre en compte les destinataires issus des checkbox.

Voici mon code actuel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<form method="post" action="cettepage.php" enctype="multipart/form-data">
	<div id="admincompanytable">
	<table id="companytable">
		<?php
		//affiche la liste des utilisateurs
		//connexion à la base de données
		mysql_connect('localhost', 'user', 'password');
		mysql_select_db('entreprises');
		// récupération de la liste des utilisateurs
		$companyTable = mysql_query('select * from entreprises_identity order by entreprises_dir');
		while ($userInfo = mysql_fetch_array($companyTable))
			{
		?>
		<tr>
			<td class="lot"><?php echo $userInfo['entreprises_dir']; ?> </td>
			<td class="metier"> <?php echo $userInfo['entreprises_name']; ?></td>
			<td> <input type="checkbox" name="destinataires[]" value="<?php echo $userInfo['entreprises_mail']; ?>" /></td>
		</tr>
		<?php
			}
		?>
	</table>
	</div>
	<div id="mailadminform">
		<label for="destinataire"><b>Destinataires</b><br />
		<input type="button" value=" Cochez dans la liste ci-contre." size="12" /><br />
		<label for="subject"><b>Sujet</b></label><br />
		<input name="subject" type="text" size="24" /><br />
		<label for="message"><b>Message</b></label><br />
		<textarea name="message" cols="25" rows="8"></textarea><br />
		<label for="fileatt"><b>Joindre un fichier</b></label><br /> 
		<input type="file" name="fileatt" size="11" /><br />
		<label>&nbsp;</label><br />
		<input name="Annuler" type="reset" value="Annuler"><input name="soumettre" type="submit" value="Envoyer">
		<?php 
		// vérification que les champs destinataires, sujet et message sont bien remplis 
		if(isset($_POST['destinataires'])&&isset($_POST['subject'])&&isset($_POST['message']))
			{
			// affectation des variables destinataires, sujet, message
			$destinataires = $_POST['destinataires'];
			$subject = $_POST['subject'];
			$message = $_POST['message'];
			// affichage d'un message si succès (ok) ou erreur (ko)
			$messageok ='<p><b>Succ&egrave;s ! Message envoy&eacute; !</b></p>';
			$messageko ='<p><b>Erreur... e-mail non envoy&eacute;.</b></p>';
			// envoi du mail
			if (mail($destinataires,$subject,$message))
				{
				echo $messageok;
				}
			else 
				{
				echo $messageko;
				}
			}
		else
			{
			echo $messageko;
			}
		//fermeture de la connexion
		mysql_close();
		?>
	</div>
</form>
La table entreprises_identity étant ainsi constituée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `entreprises_identity` (
  `entreprises_id` int(2) NOT NULL auto_increment,
  `entreprises_name` varchar(55) NOT NULL,
  `entreprises_mail` varchar(65) NOT NULL,
  `entreprises_dir` varchar(3) NOT NULL,
  PRIMARY KEY  (`entreprises_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;
En envoi manuel (champ destinataire testé sans chekbox) ce code fontionne (même s'il est loin d'être optimisé).

Par contre, avec les checkboxes, cette ligne :
if (mail($destinataires,$subject,$message))
ne me semble pas adéquate mais je ne sais pas par quoi la remplacer...

Merci de m'aiguiller.


à plus,

rcjcrcjc