Mail de confirmation : quelques remarques
Date: jeudi 18 janvier 2007 13:27:58
Bonjour,
Je suis en phase d'intégration de la version 1.3.0 d'OF et je me suis aperçu lors de mes tests que les mails de confirmation étaient envoyés systématiquement 2 fois (en fait 1 fois mais les adresses des destinataires sont doublées), ce qui n'est pas bloquant mais génant.
Après investigation, voiçi un extrait du header des emails envoyés :
To: dominique@lafamillehorvath.com, ne_pas_repondre@ac-rogerjanin.com
Subject: ACRJ. Confirmation d'une annulation de réservation sur Openflyers
From: ne_pas_repondre@ac-rogerjanin.com
To: dominique@lafamillehorvath.com, ne_pas_repondre@ac-rogerjanin.com
Cc:
Date: Thu, 18 Jan 2007 10:08:51 -0000
On s'apperçoit que le champs To est dupliqué.
En fait cela vient de la classe mail.class.php qui place les destinataires dans un tableau Header qui est ajouté au header par la classe Pear parente en plus des destinataires passés en paramètre à la fonction d'envoi.
Voici donc une correction possible pour la fonction send du fichier mail.class.php :
function send($subject,$body)
{
$now = new ofDate();
/*
*** DH * DH * DH * DH * DH * DH * DH * DH * DH * DH * DH * DH * DH ***
*** On ne met plus les destinataires (To) dans le header puisque c'est
*** la fonction mail->send qui se charge de le faire ‡ partir du 1er
*** paramËtre (si on le faisait, le mail serait envoyÈ 2 fois puisque
*** l'entÍte contiendrait 2 fois le champs To).
*** Par contre il faut le faire pour le champs Cc sinon il n'y a pas
*** de copie possible.
*** Enfin, on n'envoie le mail que s'il y a des destinataires (To)
*/
//$this->headers['To']=$this->recipients;
if (sizeof($this->copyRecipients) > 0) {
$this->headers['CC']=$this->copyRecipients;
}
$this->headers['Subject']=$subject;
$this->headers['Date']=$now->format('%a, %e %b %Y %T -0000');
if (sizeof($this->recipients) > 0) {
return $this->mail->send($this->recipients, $this->headers, $body);
}
else {
return true;
}
}
De plus, dans ce même fichier, il subsiste une erreur sur la fonction addCopyRecipient (en copier-coller qui tue venant de la fonction addRecipient sans doute) et qui empèche l'ajout d'adresses mail en copie (non utilisé dans OF en standard, ce qui doit expliquer la non-détection de ce bug, mais moi je m'en sert dans une modif perso). Voila une corrfection :
function addCopyRecipient($recipient)
{
/*
*** DH * DH * DH * DH * DH * DH * DH * DH * DH * DH * DH * DH * DH ***
*** Correction d'une erreur dans le code
*/
if (!in_array($copyRecipients,$this->copyRecipients)) {
$this->copyRecipients[]=$recipient;
}
}
Bien évidemment, ces corrections sont apportées sous toutes réserves et sans garantie, mais si ça marche mieux chez-moi, ça doit aussi être le cas chez les autres. J'espère que ça aidera.
Merci pour votre boulot,
Dominique
PS : Pour les fainéants, vous trouverez en PJ le fichier PHP déjà modifié.
Pièces jointes:
mail.class.php (5.9 KB)