diff --git a/htdocs/lib/CMailFile.class.php b/htdocs/lib/CMailFile.class.php index 4383973b5d8..4245309a24f 100644 --- a/htdocs/lib/CMailFile.class.php +++ b/htdocs/lib/CMailFile.class.php @@ -162,30 +162,36 @@ class CMailFile \brief Envoi le mail \return boolean true si mail envoyé, false sinon */ - function sendfile() - { - global $conf; - - dolibarr_syslog("CMailFile::sendfile addr_to=".$this->addr_to.", subject=".$this->subject); - dolibarr_syslog("CMailFile::sendfile header=\n".$this->headers); - //dolibarr_syslog("CMailFile::sendfile message=\n".$message); - //$this->send_to_file(); - - $errorlevel=error_reporting(); - error_reporting($errorlevel ^ E_WARNING); // Désactive warnings - - $res=false; + function sendfile() + { + global $conf; - if (! $conf->global->MAIN_DISABLE_ALL_MAILS) - { - if (isset($_SERVER["WINDIR"])) - { - 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->addr_from) ini_set('sendmail_from',getValidAddress($this->addr_from,2)); - } + dolibarr_syslog("CMailFile::sendfile addr_from=".$this->addr_from.", addr_to=".$this->addr_to.", subject=".$this->subject); + dolibarr_syslog("CMailFile::sendfile header=\n".$this->headers); + //dolibarr_syslog("CMailFile::sendfile message=\n".$message); + //$this->send_to_file(); - $dest=getValidAddress($this->addr_to,2); + $errorlevel=error_reporting(); + error_reporting($errorlevel ^ E_WARNING); // Désactive warnings + + $res=false; + + if (! $conf->global->MAIN_DISABLE_ALL_MAILS) + { + // Si Windows, addr_from doit obligatoirement etre défini + if (isset($_SERVER["WINDIR"])) + { + if (! $this->addr_from) $this->addr_from = 'robot@mydomain.com'; + if ($this->addr_from) @ini_set('sendmail_from',getValidAddress($this->addr_from,2)); + + // Forcage parametres + // \TODO A mettre pout tout OS ? + 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); + } + + + $dest=getValidAddress($this->addr_to,2); if (! $dest) { $this->error="Failed to send mail to SMTP=".ini_get('SMTP').", PORT=".ini_get('smtp_port')."
Recipient address '$dest' invalid"; @@ -196,42 +202,46 @@ class CMailFile 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)); + 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); + } + 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')."
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 (! $res) + { + $this->error="Failed to send mail to SMTP=".ini_get('SMTP').", PORT=".ini_get('smtp_port')."
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 (isset($_SERVER["WINDIR"])) { + @ini_restore('sendmail_from'); + + // Forcage parametres + // \TODO A mettre pout tout OS ? if ($conf->global->MAIN_MAIL_SMTP_SERVER) ini_restore('SMTP'); - if ($conf->global->MAIN_MAIL_SMTP_PORT) ini_restore('smtp_port'); - ini_restore('sendmail_from'); + if ($conf->global->MAIN_MAIL_SMTP_PORT) ini_restore('smtp_port'); } } else { - $this->error='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; + $this->error='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; dolibarr_syslog("CMailFile::sendfile: ".$this->error); } - error_reporting($errorlevel); // Réactive niveau erreur origine + error_reporting($errorlevel); // Réactive niveau erreur origine - return $res; - } + return $res; + } /**