diff --git a/htdocs/lib/CMailFile.class.php b/htdocs/lib/CMailFile.class.php index a33e6a788728cdd6b3d73c2f6079cb1b4caf408e..62cac51ee9376ea842bc91131c769c1c1534972a 100644 --- a/htdocs/lib/CMailFile.class.php +++ b/htdocs/lib/CMailFile.class.php @@ -174,31 +174,43 @@ class CMailFile $errorlevel=error_reporting(); error_reporting($errorlevel ^ E_WARNING); // D�sactive warnings + $res=false; + if (! $conf->global->MAIN_DISABLE_ALL_MAILS) { if ($conf->global->MAIN_MAIL_SMTP_SERVER) ini_set('SMTP',$conf->global->MAIN_MAIL_SMTP_SERVER); if ($conf->global->MAIN_MAIL_SMTP_PORT) ini_set('smtp_port',$conf->global->MAIN_MAIL_SMTP_PORT); - if ($this->errors_to) - { - dolibarr_syslog("CMailFile::sendfile: mail start SMTP=".ini_get('SMTP').", PORT=".ini_get('smtp_port').", with errorsto : ".getValidAddress($this->errors_to,1)); - $res = mail(getValidAddress($this->addr_to,2),$this->subject,stripslashes($this->message),$this->headers,"-f".getValidAddress($this->errors_to,2)); - } - else - { - dolibarr_syslog("CMailFile::sendfile: mail start SMTP=".ini_get('SMTP').", PORT=".ini_get('smtp_port')); - $res = mail(getValidAddress($this->addr_to,2),$this->subject,stripslashes($this->message),$this->headers); - } - if (! $res) - { - $this->error="Failed to send mail to SMTP=".ini_get('SMTP').", PORT=".ini_get('smtp_port')."<br>Check your server logs and your firewalls setup"; - dolibarr_syslog("CMailFile::sendfile: mail end res=$res ".$this->error); - } - else - { - dolibarr_syslog("CMailFile::sendfile: mail end res=$res"); - } - + $dest=getValidAddress($this->addr_to,2); + if (! $dest) + { + $this->error="Failed to send mail to SMTP=".ini_get('SMTP').", PORT=".ini_get('smtp_port')."<br>Recipient address '$dest' invalid"; + dolibarr_syslog("CMailFile::sendfile: mail end error=".$this->error); + } + else + { + if ($this->errors_to) + { + // \TODO Tester que le safe_mode est inactif car fonction mail avec ces param non dispo en safe_mode + dolibarr_syslog("CMailFile::sendfile: mail start SMTP=".ini_get('SMTP').", PORT=".ini_get('smtp_port').", with errorsto : ".getValidAddress($this->errors_to,1)); + $res = mail($dest,$this->subject,stripslashes($this->message),$this->headers,"-f".getValidAddress($this->errors_to,2)); + } + else + { + dolibarr_syslog("CMailFile::sendfile: mail start SMTP=".ini_get('SMTP').", PORT=".ini_get('smtp_port')); + //dolibarr_syslog("to=".getValidAddress($this->addr_to,2).", subject=".$this->subject.", message=".stripslashes($this->message).", header=".$this->headers); + $res = mail($dest,$this->subject,stripslashes($this->message),$this->headers); + } + if (! $res) + { + $this->error="Failed to send mail to SMTP=".ini_get('SMTP').", PORT=".ini_get('smtp_port')."<br>Check your server logs and your firewalls setup"; + dolibarr_syslog("CMailFile::sendfile: mail end error=".$this->error); + } + else + { + dolibarr_syslog("CMailFile::sendfile: mail end success"); + } + } if ($conf->global->MAIN_MAIL_SMTP_SERVER) ini_restore('SMTP'); if ($conf->global->MAIN_MAIL_SMTP_PORT) ini_restore('smtp_port'); } @@ -382,9 +394,10 @@ class CMailFile /** \brief Renvoie une adresse accept�e par le serveur SMTP - \param adresses Exemple: 'Jhon Doe <jhon@doe.com>' ou 'jhon@doe.com' + \param adresses Exemple: 'John Doe <john@doe.com>' ou 'john@doe.com' \param format 0=Auto, 1=emails avec <>, 2=emails sans <> - \return string Renvoi: '<john@doe.com>' ou 'Jhon Doe <jhon@doe.com>' ou 'john@doe.com' + \return string Renvoi: Si format 1: '<john@doe.com>' ou 'John Doe <john@doe.com>' + Si format 2: 'john@doe.com' */ function getValidAddress($adresses,$format) { @@ -397,7 +410,7 @@ function getValidAddress($adresses,$format) // Boucle sur chaque composant de l'adresse foreach($arrayaddress as $val) { - if (eregi('^(.*)<(.+)>$',trim($val),$regs)) + if (eregi('^(.*)<(.*)>$',trim($val),$regs)) { $name = trim($regs[1]); $email = trim($regs[2]); @@ -408,19 +421,25 @@ function getValidAddress($adresses,$format) $email = trim($val); } - if ($format == 2) - { - $ret=($ret ? $ret.',' : '').$email; - } - if ($format == 1) - { - $ret=($ret ? $ret.',' : '').'<'.$email.'>'; - } - if ($format == 0) + if ($email) { - if ($conf->global->MAIN_MAIL_NO_FULL_EMAIL) $ret=($ret ? $ret.',' : '').'<'.$email.'>'; - elseif (! $name) $ret=($ret ? $ret.',' : '').'<'.$email.'>'; - else $ret=($ret ? $ret.',' : '').$name.' <'.$email.'>'; + $newemail=''; + if ($format == 2) + { + $newemail=$email; + } + if ($format == 1) + { + $neweamil='<'.$email.'>'; + } + if ($format == 0) + { + if ($conf->global->MAIN_MAIL_NO_FULL_EMAIL) $newemail='<'.$email.'>'; + elseif (! $name) $newemail='<'.$email.'>'; + else $newemail=$name.' <'.$email.'>'; + } + + $ret=($ret ? $ret.',' : '').$newemail; } }