Page 1 sur 1

[Corrigé 3.1.29] Erreur PHPmailer lorsque pas de technicien

Posté : mer. 13 déc. 2017 18:07
par yannickq
Bonjour à tous !

Je rencontre un souci depuis la mise à jour en 3.1.25 et l'ajout du champs "adresse de l'émetteur" dans les paramètres. Ce champs n'est pour moi pas utile et est donc laissé vide pour conserver le fonctionnement avant mise à jour 3.1.25, à savoir lorsqu'un e-mail est envoyé c'est l'adresse de l'utilisateur qui set utilisé comme expéditeur.

Les symptômes : lors de l'ouverture d'un ticket par un utilisateur, le champs technicien est fixé à Aucun par défaut, jusque là rien d'anormal.

Par contre si l'utilisateur veut immédiatement effectuer un envoi d'e-mail, l'erreur suivante survient (ici sur une version 3.1.28 en 3.1.25 seul le numéro de ligne du mail.php change):

Code : Tout sélectionner

PHP Fatal error:  Uncaught exception 'PHPMailer\\PHPMailer\\Exception' with message 'Invalid address:  (addAnAddress Reply-To): ' in /var/www/gestsup_test/components/PHPMailer/src/PHPMailer.php:966\nStack trace:\n#0 /var/www/gestsup_test/components/PHPMailer/src/PHPMailer.php(938): PHPMailer\\PHPMailer\\PHPMailer->addOrEnqueueAnAddress('Reply-To', '', '')\n#1 /var/www/gestsup_test/core/mail.php(392): PHPMailer\\PHPMailer\\PHPMailer->addReplyTo('')\n#2 /var/www/gestsup_test/preview_mail.php(27): require('/var/www/gestsu...')\n#3 /var/www/gestsup_test/index.php(884): include('/var/www/gestsu...')\n#4 {main}\n  thrown in /var/www/gestsup_test/components/PHPMailer/src/PHPMailer.php on line 966, referer: http://gestsup_test.jes.fr/index.php?page=preview_mail&id=5562&userid=0&state=%&category=%&subcat=%&viewid=&view=&date_start=&date_end=
Après plusieurs tests voici ce que j'ai constaté :

champs "adresse de l'émetteur" : renseigné => ok les e-mail partent avec l'adresse du champs.
champs "adresse de l'émetteur" : vide => les e-mail ne fonctionnent que si le ticket a un technicien affecté.

Le bout de code qui me semble responsable :

fichier ./core/mail.php - ligne 387 (@Version : 3.1.25) ou ligne 391 ( @Version : 3.1.28 p2)

Code : Tout sélectionner

if ($rparameters['mail_from_adr']!='') {$mail->AddReplyTo("$rparameters[mail_from_adr]");} else {$mail->AddReplyTo("$techrow[mail]");}
j'ai testé avec les patchs beta 3.1.28, le problème est toujours présent.

Dans mon cas si j'enlève le else, les e-mail partent mais pas avec l'adresse de l'tulisateur.


Merci pour votre aide !

Yannick

Re: Erreur PHPmailer lorsque pas de technicien

Posté : mer. 13 déc. 2017 19:01
par Flox
Bonjour,

pouvez-vous remplacer votre ligne 391 par :

Code : Tout sélectionner

if ($rparameters['mail_from_adr']!='') {$mail->AddReplyTo("$rparameters[mail_from_adr]");} elseif ($rparameters['$techrow[mail]']!='') {$mail->AddReplyTo("$techrow[mail]");}
Pour information vous donner le droit a vos utilisateur d'afficher le bouton "Envoyer un mail" ?

Cdt

Re: Erreur PHPmailer lorsque pas de technicien

Posté : jeu. 14 déc. 2017 10:41
par yannickq
Bonjour et merci pour le retour rapide, ainsi que la correction qui fonctionne parfaitement (en 3.1.25 et 3.1.28)

Pour vous répondre, oui nous donnons accès à l'envoi d'e-mail aux utilisateurs pour reproduire l'équivalent de la mise en copie d'e-mail à laquelle les gens sont très attachés (souvent pour se justifier) ;)

par exemple : Une personne ouvre un ticket, puis fait un envoi d'e-mail à un responsable pour l'informer de la demande. Sinon dans certains cas les demandes sont centralisées sur une personne qui ouvrent les tickets. Cette personne envoi un e-mail du ticket à l'émetteur d'origine de la demande orale.

Pouvez-vous me dire si cette modification sera appliquée sur les prochains patch ou faut-il que je me garde en tête cette particularité ?

Merci encore !

Yannick