Mails envoyés en double avec liste distrib

Cryborg Messages postés 6 Statut Membre -  
Cryborg Messages postés 6 Statut Membre -
Bien le bonjour !

Je rencontre un souci lors de l'envoi de mail via mon intranet vers des listes de diffusion.
Nous avons un serveur Exchange, et utilisons Outlook. Lorsque l'on envoie un mail à plusieurs listes de distribution, les personnes appartenant à plusieurs groupes ne reçoivent qu'une seule fois le message, ce qui est très bien, et très logique.

Mais lorsque j'envoie le même message, aux mêmes listes de diffusion, mais via la fonction mail() de PHP, ce tri n'est pas fait. Et une personne recevra plusieurs fois le mail, suivant le nombre de fois qu'elle est répertoriée dans les listes de diffusion.

Je pensais que c'était Exchange qui faisait le tri lors de la réception, mais il semblerait que ce ne soit pas le cas...

La seule différence que je puisse voir est la suivante : lors de l'envoi par Outlook, j'indique le nom de la liste de diffusion, sans avoir besoin d'indiquer le nom de domaine. En revanche, je suis obligé avec PHP d'indiquer @domaine.fr.
Pourtant, lors de l'envoi sous Outlook, même en indiquant le domaine, le tri est fait....

Je n'ai rien trouvé sur le net qui puisse me guider, si quelqu'un a déjà rencontré ce souci et à réussi à le solutionner, ce serait génial :)

Merci !
A voir également:

3 réponses

croy Messages postés 457 Statut Membre 114
 
Comment sont codés ton appel de la fonction mail PHP ainsi que l'élaboration du premier paramètre de cette fonction ($to) ?
1
Cryborg Messages postés 6 Statut Membre
 
Voici la fonction qui me sert à envoyer les mails :

function envoieMail($destinataires, $destinataires_cc, $sujet, $message)
{
	// Ajout des en-têtes
	$headers  = "MIME-Version: 1.0\r\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
	if ($destinataires_cc != '') $headers .= 'Cc: ' . $destinataires_cc . "\r\n";
	
	// Nom du serveur Exchange
	ini_set('SMTP', 'xxxxxxx');
	ini_set('sendmail_from', 'Intranet_Architecture@domaine.fr');
	
	// Envoi du mail
	return mail($destinataires, $sujet, MAIL_HTML_HEADER . $message . MAIL_HTML_FOOTER, $headers);
}


J'avais moi aussi pensé à un éventuel doublon $to / premier paramètre mail(), mais ce n'est pas le cas, seules les personnes présentes dans plusieurs listes de diffusion sont concernées...

Je testerai avec PHPMailer, afin de voir si le souci est également présent
0
croy Messages postés 457 Statut Membre 114
 
Ajoute la ligne suivante juste avant la ligne appelant la fonction mail :
echo '<br>...' . $destinataires . '...';


Qu'est-ce qui s'affiche à l'exécution
1
Cryborg Messages postés 6 Statut Membre
 
Et bien il m'affiche la liste des listes de diffusion que je lui ai passé en paramètre de ma fonction envoieMail(). Il n'y a pas de doublons dans les listes de diffusion elles-mêmes.

...ETUDES_ARCHITECTURE@domaine.fr, EXPLOIT_BUREAUTECH@domaine.fr...
0
croy Messages postés 457 Statut Membre 114
 
OK, je comprends le pb.

Je vois deux possibilités :

1. intervenir au niveau du serveur EXCHANGE si cela est possible et, de toutes manières je ne saurais pas te conseiller sur ce sujet

2. programmer toi-même le dédoublonage en suivant les étapes suivantes :
- placer dans un tableau toutes les adresses "de base" correspondant à chacune de ces listes de diffusion
- élminer les doublons de ce tableau (voir la fonction array_unique)
- reconstruire le string des destinataires à partir du tableau dédoublonné
- appeler mail

L'inconvénient de cette méthode est au niveau de la première étape : si tu ne peux pas extraire du serveur Exchange le détail des listes de diffusion tu sera obligé de les gérer en double.
1
Cryborg Messages postés 6 Statut Membre
 
C'est bien ce dont j'avais peur effectivement... Je ne voyais pas comment faire sans toucher au serveur Exchange... Quant à gérer nominativement les mails, cela règlera le problème, mais ce n'est pas top niveau évolutivité :)

Merci beaucoup pour ton aide, je te tiendrais au courant sur ce que cela a donné avec PHPMailer... même si je ne vois pas comment je pourrais avoir un autre résultat :)
0