[Corrigé 3.1.22] Problème d'envoie automatique d'email

Vous avez trouvé un bug dans l'application (dernière version stable ou bêta): Décrivez le ici afin que la correction soit intégrée a la prochaine version.
Répondre
Crof
Gsup LEVEL 3
Messages : 61
Enregistré le : mer. 28 juin 2017 15:27

Bonjour,

Version de GestSup : 3.1.20
Serveur SMTP : Exchange 2010

J'ai rencontré un problème d'envoi d'email avec un serveur SMTP sans authentification requise sur le port 25.
L'erreur avait lieu uniquement lors des envoie automatique, cela fonctionnait bien lorsque j'utilisai le bouton "Envoyer un mail".

Voici le message d'erreur obtenu avec le mode debug activé :
Image

Malgré une configuration sans authentification, port 25, mon serveur Gestsup voie automatiquement que mon serveur SMTP parle le TLS, ce qui bloque l'envoie de l'email au final.

Après quelques recherches, j'ai trouvé qu'il fallait dans ce cas renseigner le paramètre suivant au niveau de PHPMailer : SMTPAutoTLS = false

Voici la correction que j'ai apporté au fichier core/message.php :

<?php
################################################################################
# @Name : /core/message.php
# @Description : page to send mail
# @Call : /core/auto_mail.php
# @parameters : $from, $to, $message, $object
# @Author : Flox
# @Create : 21/11/2012
# @Update : 24/05/2017
# @Version : 3.1.22
################################################################################

require_once("components/PHPMailer/PHPMailerAutoload.php");
$mail = new PHPmailer();
$mail->CharSet = 'UTF-8'; //ISO-8859-1 possible if string problems
if ($rparameters['mail_smtp_class']=='IsSendMail()') {$mail->IsSendMail();} else {$mail->IsSMTP();}
if($rparameters['mail_secure']=='SSL')
{$mail->Host = "ssl://$rparameters[mail_smtp]";}
elseif($rparameters['mail_secure']=='TLS')
{$mail->Host = "tls://$rparameters[mail_smtp]";}
else
{$mail->Host = "$rparameters[mail_smtp]";$mail->SMTPAutoTLS = false;}
$mail->SMTPAuth = $rparameters['mail_auth'];
if ($rparameters['debug']==1) $mail->SMTPDebug = 2;
if ($rparameters['mail_secure']!=0) $mail->SMTPSecure = $rparameters['mail_secure'];
if ($rparameters['mail_port']!=25) $mail->Port = $rparameters['mail_port'];
$mail->Username = "$rparameters[mail_username]";
$mail->Password = "$rparameters[mail_password]";
$mail->IsHTML(true); // Envoi en html
$mail->From = "$from";
$mail->FromName = "$from";
$mail->AddAddress("$to");
$mail->AddReplyTo("$from");
$mail->Subject = "$object";
$mail->Body = "$message";
if (!$mail->Send())
{
echo '<div class="alert alert-block alert-danger"><center><i class="icon-remove red"></i> <b>'.T_('Message non envoyé, vérifier la configuration de votre serveur de messagerie').'.</b> (';
echo $mail->ErrorInfo;
echo ')</center></div>';
}
$mail->SmtpClose();
?>



__________________________________________

Si ça peut aider certains, voir être ajouté au développement (cela a peut-être des impacts en l'état pour certaines configurations).
Serveur: Ubuntu 16.04 | GestSup: 3.2.2 | Apache: 2.4.18 | MariaDB : 10.0.29 | PHP: 7.3.22-1
Avatar du membre
Flox
Administrateur du site
Messages : 9436
Enregistré le : jeu. 21 juin 2012 19:00

Bonjour,

Effectivement ce problème à déja été corrigé pour la 3.1.22, pour le valider pourriez vous tester le remplacement de votre fichier ./core/messages.php par celui en pièce jointe.

Cordialement.
Fichiers joints
message.zip
(961 Octets) Téléchargé 298 fois
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3.12 | https://doc.gestsup.fr/
Avatar du membre
Flox
Administrateur du site
Messages : 9436
Enregistré le : jeu. 21 juin 2012 19:00

GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.59 | MariaDB: 11.5.2 | PHP: 8.3.12 | https://doc.gestsup.fr/
Crof
Gsup LEVEL 3
Messages : 61
Enregistré le : mer. 28 juin 2017 15:27

Cela fonctionne avec le fichier message.php de la v3.1.21 :)
Serveur: Ubuntu 16.04 | GestSup: 3.2.2 | Apache: 2.4.18 | MariaDB : 10.0.29 | PHP: 7.3.22-1
Répondre