Mails envoyés en double avec liste distrib
Cryborg
Messages postés
6
Statut
Membre
-
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 !
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:
- Mails envoyés en double avec liste distrib
- Double ecran - Guide
- Liste déroulante excel - Guide
- Whatsapp double sim - Guide
- Liste déroulante en cascade - Guide
- Double driver - Télécharger - Pilotes & Matériel
3 réponses
Comment sont codés ton appel de la fonction mail PHP ainsi que l'élaboration du premier paramètre de cette fonction ($to) ?
Ajoute la ligne suivante juste avant la ligne appelant la fonction mail :
Qu'est-ce qui s'affiche à l'exécution
echo '<br>...' . $destinataires . '...';
Qu'est-ce qui s'affiche à l'exécution
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.
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.
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 :)
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 :)
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