hpsam a écrit:
Merci Rub
Merci à toi aussi pour avoir mis en évidence le double "to:".
Merci à tous pour vos retours et vos tests!
< fin mode bisounours ;-) >
Bonjour,
J'étais en congés d'où mon absence de retour.
J'ai testé sur la 2.03 c'est OK.
J'ai reporté les modifs sur la 1.7.3 c'est OK.
Test en SMTP et via mail().
Merci Rub
Bonjour,
J'avais aussi remarqué depuis peu le doublon, et pas de soucis, la correction fonctionne aussi tout bien chez moi ;-)
Merci !
Merci rub, tout à l'air OK !
kurt avec le correctif, tu n'as plus le soucis?
Bonjour,
Je viens de me rendre compte (si cela peux vous aider
Envoi sur mon adresse avec Thunderbird = messages à double
Envoi sur une adresse de test .abcde@gmail.com = 1 seul message reçu
Bonjour,
Je viens de tomber sur ce topics, et suis intéressé car j'ai le même problème avec mon site.
Voila, la correction est remontée [Subversion] r3799
Fichier include/functions_mail.inc.php
Fichier class_smtp_mail.inc.php
Sinon, en effectuant les tests chez moi, dans tous les cas, je n'ai pas le "To:" donc ca dépend aussi du server mail qui va faire les envois.
Moi, j'ai les tests par le smtp de free.
hpsam a écrit:
Déjà la suppression du get_strict_email_list() dans pwg_mail() fait planter l'envoi SMTP
Ha, je savais que je l'avais pour quelque chose ;-)
Mais, il me semble qu'il aussi le faire pour la fonction mail dans certaines configurations particulières.
Et merci pour avoir faire les tests.
Déjà la suppression du get_strict_email_list() dans pwg_mail() fait planter l'envoi SMTP
return trigger_event('send_mail', false, /* Result */ trigger_event('send_mail_to', get_strict_email_list($to)),
Si je commente l'ajout du "To:" dans les headers au niveau de pwg_mail() et que je force $to_header = ''; dans la classe smtp_mail je reçois bien les mails en un seul exemplaire mais il n'y a aucun header "To:". On retrouve le destinataire dans le champ "Delivered-To:"
Return-Path: <webmaster@mail.com> Delivered-To: user@mail.com Received: from b0.ovh.net (HELO queue) (213.186.33.50) by b0.ovh.net with SMTP; 26 Aug 2009 18:03:30 -0000 Received: from localhost (HELO mail407.ha.ovh.net) (127.0.0.1) by localhost with SMTP; 26 Aug 2009 18:03:30 -0000 Received: from b0.ovh.net (HELO queueout) (213.186.33.50) by b0.ovh.net with SMTP; 26 Aug 2009 18:03:30 -0000 Received: from ksXXXXX.kimsufi.com (HELO ns0.ovh.net) (user@mail.com@91.121.XXX.XXX) by ns0.ovh.net with SMTP; 26 Aug 2009 18:03:28 -0000 Subject: =?iso-8859-1?Q?[PWG_Title]:_Inscription_=E0_la_notification_par_mail?= From: "PWG Title" <webmaster@mail.com> Reply-To: "PWG Title" <webmaster@mail.com> Content-Type: multipart/alternative; boundary="---=EiX95T9p6837e6cV8nDIH7aIkDWP1920"; reply-type=original MIME-Version: 1.0 X-Mailer: Piwigo Mailer
Si je commente juste l'ajout du "To:" dans les headers au niveau de pwg_mail() il est bien ajouté au niveau de la classe smtp_mail.
Return-Path: <webmaster@mail.com> Delivered-To: user@mail.com Received: from b0.ovh.net (HELO queue) (213.186.33.50) by b0.ovh.net with SMTP; 26 Aug 2009 18:53:53 -0000 Received: from localhost (HELO mail427.ha.ovh.net) (127.0.0.1) by localhost with SMTP; 26 Aug 2009 18:53:53 -0000 Received: from b0.ovh.net (HELO queueout) (213.186.33.50) by b0.ovh.net with SMTP; 26 Aug 2009 18:53:53 -0000 Received: from ksXXXXX.kimsufi.com (HELO ns0.ovh.net) (webmaster@hpsam.info@91.121.161.6) by ns0.ovh.net with SMTP; 26 Aug 2009 18:53:52 -0000 Subject: =?iso-8859-1?Q?[PWG_Title]:_Inscription_=E0_la_notification_par_mail?= To: <user@mail.com> From: "PWG Title" <webmaster@mail.com> Reply-To: "PWG Title" <webmaster@mail.com> Content-Type: multipart/alternative; boundary="---=E3nWl3538xOLxJOdGsV9AC96KEDq71vn"; reply-type=original MIME-Version: 1.0 X-Mailer: Piwigo Mailer
hpsam a écrit:
Je viens de tester en configurant le SMTP pour ne pas passer par la fonction mail() de PHP.
Dans ce cas je ne reçois bien qu'un mail dans les entête du quel il y a un seul champ "To:".
Pourtant, on envoie indépendant les commandes "to:" du header.
Ca aurait pu aussi ;-)
hpsam a écrit:
En toute logique PHPienne, l'utilisation de mail() avec le champ "To:" dans les headers supplémentaires contenant le même mail que le 1er paramètre de mail() devrait provoquer 100% de double mails. Mais il est possible que certaines messageries (antispam ?) détecte automatiquement les doublons et n'en garde qu'un.
Ca dépend si ton système prend en compte les 2 lignes ou bien une seule...
Vu qu'il ne devrait y avoir qu'une, la regle à choisir est arbitraire...
En regardant bien, sous gmail, il me met bien 2 destinataires mais un seule.
C'est vraiment, le serveur de mail qui géré ca à sa façon.
hpsam a écrit:
Le plus simple serait peut-être de rajouter un test pour ne pas ajouter le champ "To:" aux headers quand le SMTP n'est pas configuré.
Pas sur, car la on tu as modifie, on ne sait si on est en smtp ou pas.
Mais dans le fichier include/class_smtp_mail.inc.php, je rajoute le "to:" dans le header.
if (preg_match('/^\s*to\s*:.*/mi', $headers) === 0) { $to_header = 'To: '.implode(',', array_map(create_function('$email','return "<".$email.">";'), $recipients)); } else { $to_header = ''; }
Tu peux faire un test pour moi?
Sur ta 1.7.3 sans le "to:" dans le header, peux-tu faire en sorte que le $to_header soit vide dans tout les cas?
Et faire un test en envoi en smtp...
Mais vu qu'en smtp ca fonctionne sans problème avec le 'to:' avec les header et avec les 'RCPT TO: <', je pense suivre le conseil de hpsam et ne faire la modif que dans l'appel de la fonction mail...
hpsam a écrit:
C'est ouvert dans le tracker : http://piwigo.org/bugs/view.php?id=1145
Merci!
C'est ouvert dans le tracker : http://piwigo.org/bugs/view.php?id=1145
Je viens de tester en configurant le SMTP pour ne pas passer par la fonction mail() de PHP.
Dans ce cas je ne reçois bien qu'un mail dans les entête du quel il y a un seul champ "To:".
rub a écrit:
Après analyse de vos réponses et des mails provenant de différents, le fait d'avoir le mail en double provient de l'entité qui reçoit le mail.
En toute logique PHPienne, l'utilisation de mail() avec le champ "To:" dans les headers supplémentaires contenant le même mail que le 1er paramètre de mail() devrait provoquer 100% de double mails. Mais il est possible que certaines messageries (antispam ?) détecte automatiquement les doublons et n'en garde qu'un.
Le plus simple serait peut-être de rajouter un test pour ne pas ajouter le champ "To:" aux headers quand le SMTP n'est pas configuré.
hpsam, tu peux ouvrir un bug dans le bugtracker?
http://piwigo.org/bugs/
Après analyse de vos réponses et des mails provenant de différents, le fait d'avoir le mail en double provient de l'entité qui reçoit le mail.
Par exemple, pour le site de pat01, pat01 les recoit en double alors que moi sous gmail non. Pourtant, ca provient du même site.
Comme l'a souligné hpsam, il y au final (après appel de la fonction mail) 2 "to:" dans le header. Et ca quelque soit la version de php (vérif faite sur plusieurs sites).
ASAP, je commites un correctif qui ne mettra plus les "to:" dans les headers (en envoi par la fonction mail et en envoi par smtp).
C'est la solution à mon avis la plus sure (par rapport à celle ou l'on doit pas passer le to en argument).
Je vous donnerais les fichiers modifiés pour que vous pussiez faire un test.