pixeline / bugs

Simple Issue Tracking for Teams. Built in Laravel 3 (php/mysql)
pixeline.github.io/bugs/
MIT License
88 stars 24 forks source link

Send email to user(s) after new ticket added or commented #353

Closed Albatros78 closed 3 years ago

Albatros78 commented 3 years ago

Hello Patrick,

Lorsque l'administrateur ajoute un ticket ou un commentaire ne serait il pas possible d'envoyer un email à tous les utilisateurs qui suivent le projet, pour prévenir d'une modification (comme Github le fait) dès qu'une personne modifie ou ajoute quelque chose.

Cela fonctionne lorsque l'utilisateur ajoute un commentaire, l'administrateur reçoit un email !

Merci

Patriboom commented 3 years ago

D'expérience, je puis dire que ce n'est pas souhaitable. Avec la multiplication des billets se multiplient aussi les courriels. Ça crée donc une avalanches de courriels. Les messages deviennent si nombreux que l'usager n'en tient plus compte. Comme nous disons ici « Trop c'est comme pas assez.» C'est de là que vient le choix de n'aviser que la personne responsable du billet.

Pour arriver à accomplir ce que vous suggérez, il faudrait ajouter une case à cocher "me tenir au courant". Cela impliquerait la création d'un champ, voire d'une table dans le système. Ce n'est plus l'affaire de quelques minutes. Tout cela pour créer une avalanche de courriels que les usagers n'aimeront problablement pas .... pas sûr que ce soit génial!

Albatros78 commented 3 years ago

Ok tu as raison !

Mais ajouter l'option pour que l'utilisateur puisse recevoir les emails serait intéressante !

Patriboom commented 3 years ago

Bonjour Albatros78,

je progressai de façon importante ces derniers jours, comme tu peux voir dans la section "Projects" ci-haut ( https://github.com/pixeline/bugs/projects/13 )

Pourrai-je compter sur toi pour tester ?

Albatros78 commented 3 years ago

Hello Patrick,

Super...

Oui bien sûr... je regarderai les nouveautés et fonctionnement..

Axel

Patriboom commented 3 years ago

Merci. Je te ferai signe lorsque la première version sera disponible. Ce pourrait être dès la semaine courante.

Albatros78 commented 3 years ago

no problem... :-)

Merci pour ces avancements... je crois que cela enrichit bien l'outil.

Patriboom commented 3 years ago

C'est bon. Il me reste une petite chose à faire dans ce projet.

La mise à jour de BUGS doit cette fois être faite via le système intégré ( cliquez sur Administration et suivez les instructions )

image

Patriboom commented 3 years ago

En fait ... deux chose me restent à compléter; voir les détails dans le projet.

Patriboom commented 3 years ago

On peut cliquer sur la bulle pour inverser notre choix de suivi. Vert est à côté d'un billet suivi, gris un non-suivi. You can click on the icon to toggle between "follow" and "no follow". Green when you follow, grey when not.

image

Albatros78 commented 3 years ago

C'est peut être mieux que j'attende que tu es terminé ce qu'il reste pour avoir tout d'un coup .

Albatros78 commented 3 years ago

Avec la mise à jour automatique depuis le menu administration, la base est aussi automatiquement mise à jour ?

Patriboom commented 3 years ago

Oui, la base est automatiquement mise à jour. Rien ne sera perdu, une nouvelle table sera créée - vide - pour les nouvelles fonctions.

Et puis non, ce n'est pas la peine d'attendre. S'il y a des bogues à corriger dans ce qui est déjà fait, ça servira à la suite en évitant de répéter les mêmes erreurs.

Patriboom commented 3 years ago

Pouvons-nous fermer ce billet ?

Albatros78 commented 3 years ago

Hello Depuis les modifications pour le suivi l'ajout d'un ticket fonctionne mais plus l'envoi de l'email !!!! qui marchait avant.

Message: mail(): Bad Message Return Path Location: E:\xampp\htdocs\bugtracker\app\application\controllers\project\issue.php on line 67 Stack Trace:

Patriboom commented 3 years ago

Nous unissions ici les propos du présent billet à ceux du https://github.com/pixeline/bugs/issues/348 qui se rejoignent quant au contenu suite à l'évolution de chacun.

Ce qui m'étonne ici c'est de lire qui marchait avant, car le message d'erreur pointe vers un problème de configuration du serveur dans le fichier config.app.php Si rien n'a été changé dans ce dernier, comment comprendre qui marchait avant ?

Patriboom commented 3 years ago

Ceci vient du billet 384: `Concernant le souci de courriel, voici ce que j'ai trouvé: problème de configuration du serveur de sortie ( https://stackoverflow.com/questions/51404390/warning-bad-message-return-path-php#51408308 -en anglais. Il s'agit donc de la configuration que vous avez inscrite dans ./bugs/config.app.php aux lignes 94 à 119.

Concernant Unhandled Exception Message: Trying to access array offset on value of type null Location: E:\xampp\htdocs\bugtracker\app\application\models\user.php on line 173 C'est le fait d'une base vide. Je viens d'apporter un correctif dans mon code. Il sera disponible prochainement. En attendant, vous pouvez ajouter la ligne suivante au fichier, entre les actuelles lignes 167 et 168 if ($tag_diff === NULL) { $tag_diff['added_tags'] = array(); $tag_diff['removed_tags'] = array(); } si besoin.`

Albatros78 commented 3 years ago

Hello Patrick

Le nouveau fichier app/application/controllers/project/issue.php est comem cela à la ligne 57

    //Email process for assignee
        $header = "";
        $subject  = sprintf(__('email.assignment'),$Issue_title,$project_nm);
        $text  = sprintf(__('email.assignment'),$Issue_title,$project_nm);
        $text .= "\n\n";
        $text .= sprintf(__('email.assigned_by'),\Auth::user()->firstname." ".\Auth::user()->lastname);
        $text .= "\n\n";
        $text .= sprintf(__('tinyissue.priority')." : ".__('tinyissue.priority_desc_'.$thisIssue[0]->attributes["status"]));
        $text .= "\n\n";
        $text .= __('email.more_url').Project::current()->to('issue')."/".$issue_num."";

        mail($WhoAddr, $subject,$text,$header);
    //End of email process for assignee

J'avais modifié le fichier comme ci dessous précédemment pou rrecevoir les emails correctement... Cel ane vient pas de la configuration du fichier config.app.php mail de la variable $header je pense qui est pas bien renseignée.

        $text .= __('email.more_url').Project::current()->to('issue')."/".$issue_num."";

            /* Debut AFS */
        $text .= "<br><br>";
        $text .= "Thank you for your attention";
        $text .= "<br><br><br><br>";
        $text .= "AF Software Team";
        $text .= "<br><br>";
        $text .= "<img src='https://www.afsoftware.fr/images/af-software.jpg' height=100px width=100px>";

/ $header = "From: [AFS BugTracker] no_reply@afsoftware.fr"; / $header = 'From: [AFS BugTracker] no_reply@afsoftware.fr';
$header .= "Reply-To: [AFS BugTracker] no_reply@afsoftware.fr\n";
$header .= "Content-Type: text/html; charset=\"iso-8859-1\""; mail($WhoAddr, $subject,$text,$header);

        /* Fin AFS */

        // mail($WhoAddr, $subject,$text,$header);
    //End of email process

En ajoutant cela dans la version actuelle et en créant un nouveau ticket j'ai désormais l'erreur suivante: !!

Unhandled Exception Message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'PRO.title' in 'field list'

SQL: SELECT USR.email, CONCAT(USR.firstname, ' ', USR.lastname) AS user, USR.language, PRO.title FROM following AS FAL LEFT JOIN users AS USR ON USR.id = FAL.user_id LEFT JOIN projects PRO ON PRO.id = FAL.project_id WHERE FAL.project_id = 1 AND FAL.project = 1 AND FAL.user_id NOT IN (1,1)

Bindings: array ( ) Location: E:\xampp\htdocs\bugtracker\app\laravel\database\connection.php on line 263 Stack Trace:

Albatros78 commented 3 years ago

Avec l'erreur précédente le ticket est crée et l'email arrive mais erreur ci dessus SQLSTATE[42S22]:

Patriboom commented 3 years ago

Merci Albatros78. J'y vois.

Patriboom commented 3 years ago

C'est fait. Nouvelle mise à jour incluant plusieurs correctifs liés à l'envoi de courriel et autres détails discutés ici et dans les billets 384 etc.

Albatros78 commented 3 years ago

Je peux télécharger et tester ?

Patriboom commented 3 years ago

Oui, vous pouvez tester.

Il ne faut pas investir d'effort dans la définition des $header. Le mode d'émission de courriel actuel - dans cette section - ne respecte pas la norme laravel. Il faudra confier l'expédition du courriel à la fonction send_email de ./app/application/librairies/mail.php lorsque le contenu et les destinataires seront bien contrôlés.

Albatros78 commented 3 years ago

Bon v1.84b

Même erreur d'envoi d'email (ticket crée) que précédemment. Si je change le code avec le $header comme ci dessous:

$text .= __('email.more_url').Project::current()->to('issue')."/".$issue_num."";

        /* Debut AFS */
    $text .= "<br><br>";
    $text .= "Thank you for your attention";
    $text .= "<br><br><br><br>";
    $text .= "AF Software Team";
    $text .= "<br><br>";
    $text .= "<img src='https://www.afsoftware.fr/images/af-software.jpg' height=100px width=100px>";

/ $header = "From: [AFS BugTracker] no_reply@afsoftware.fr"; / $header = 'From: [AFS BugTracker] no_reply@afsoftware.fr'; $header .= "Reply-To: [AFS BugTracker] no_reply@afsoftware.fr\n"; $header .= "Content-Type: text/html; charset="iso-8859-1""; mail($WhoAddr, $subject,$text,$header);

    /* Fin AFS */

    // mail($WhoAddr, $subject,$text,$header);
//End of email process

Le mail est recu et le ticket est crée.... plus d'erreur SQL ! Mais le mail est envoyé à l'utilisateur assigné au projet... le follower ne recoit rien sur le nouveau ticket !

Super

Patriboom commented 3 years ago

Attention, ceux qui suivent le billet devraient recevoir un courriel, seulement si ce n'est pas l'auteur de la modification.

Patriboom commented 3 years ago

Nous y sommes presque. Encore une mise à jour au cours des dernières minutes.

Je prends un pause. Question de me changer les idées et de vous laisser tester. Merci de m'aider ainsi.

Albatros78 commented 3 years ago

Je viens de télécharger la derniere...

Création d'un ticket.

Message: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing Location: E:\xampp\htdocs\bugtracker\app\application\controllers\project\issue.php on line 76

Albatros78 commented 3 years ago

OK. Je crois que sendmail n'est pas installé sur mon serveur sous XAMPP. Je vais regarder cela et reviendrais vers toi plus tard. Il faut que je l'installe mais totu en gardant ma configuration actuelle ... Grrrrr

Je te laisse corriger les autres petites choses pendant ce temps

merci de ton temps.

Patriboom commented 3 years ago

Pourtant, voici le code actuel :

$boundary = md5(uniqid(microtime(), TRUE));
$optMail = Config::get('application.mail');
$passage_ligne = (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $WhoAddr)) ? "\r\n" : "\n";
$headers  = 'From: "'.$optMail['from']['name'].'" <'.$optMail['from']['email'].'>'.$passage_ligne;
$headers  = 'Reply-To: "'.$optMail['from']['name'].'" <'.$optMail['from']['email'].'>'.$passage_ligne;
$headers .= 'Content-Type: text/html; charset="iso-8859-1"';
$headers .= 'Mime-Version: 1.0'.$passage_ligne;
$headers .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"';
$headers .= $passage_ligne;
$subject  = sprintf(__('email.assignment'),$Issue_title,$project_nm);
$text  = sprintf(__('email.assignment'),$Issue_title,$project_nm);
$text .= "\n\n";
$text .= sprintf(__('email.assigned_by'),\Auth::user()->firstname." ".\Auth::user()->lastname);
$text .= "\n\n";
$text .= sprintf(__('tinyissue.priority')." : ".__('tinyissue.priority_desc_'.$thisIssue[0]->attributes["status"]));
$text .= "\n\n";
$text .= __('email.more_url').Project::current()->to('issue')."/".$issue_num."";
//Mail::send_mail($text, $WhoAddr, $subject);
mail($WhoAddr, $subject, $text, $headers.$passage_ligne);

Peut-être suffit-il de remplacer

$headers  = 'From: "'.$optMail['from']['name'].'" <'.$optMail['from']['email'].'>'.$passage_ligne;
$headers  = 'Reply-To: "'.$optMail['from']['name'].'" <'.$optMail['from']['email'].'>'.$passage_ligne;

Par les informations en dur que tu as fournies ci-haut:

$headers  = 'From: MonAdresse@origin.com';
$headers  = 'Reply-To: MonAdresse@retour.com';
Patriboom commented 3 years ago

Je préfère que vous n'ayez pas à jouer dans votre config. Ainsi, ça restera universellement fonctionnel ou dysfonctionnel, car peu d'usagers aiment jouer dans les configs.

Patriboom commented 3 years ago

Développement important dans ce dossier. Je viens de procéder à la supression de 51 lignes et l'ajout de seulement 11 lignes ( bilan de -40 lignes de code ). Je crois que ça simplifiera le tout et le rendra plus stable. Mais attendez avant de charger. Je dois encore faire 2-3 bricoles.

Patriboom commented 3 years ago

Ok, allez-y.

Pour ma part, je sors profiter du beau temps.

Albatros78 commented 3 years ago

Hello Patrick,

Bonne nouvelle, voila j'ai configure sendmail dans mon serveur apache XAMPP. Ouffff...et cela fonctionne et mes autres applications envoient bien les emails aussi via mail()... Donc mon serveur web/apache se débrouille bien :-)

Lorsque je crée un ticket je reçois l'email... Cool on avance. :-)

Je n'ai rien changé dans BUGS ni dans config.app.php. Donc l'application reste universelle. Juste ajouter la librairie dans XAMPP et configurer le .INI associé... dans mon serveur en localhost.

Demain je regarde plus en détails ... Je télécharge le dernier package ZIP avant de refaire mes nouveaux tests ?

Bonne fin de journée... moi il est 21h ! Axel

Patriboom commented 3 years ago

Wow! Bonne nouvelle.

Albatros78 commented 3 years ago

v1.84c installée Aucune email ne part, pas d'erreur, le ticket est crée ! et pas d'erreur de sendmail. pas de fichier log sur le sujet

Cela marchait hier avant 1.84c lorsque j'ai testé sendmail sur mon serveur avec 1.84b... Rien changé sur mon serveur web depuis hier juste recopier la v1.84c

J'ai commenté #389 car cela fonctionne ...merci pour la prise en compte de la remarque

Patriboom commented 3 years ago

C'est étrange. J'avais testé et ça semblait fonctionner. Je teste ce matin, suite à votre avis. Et - de fait - ça ne fonctionne pas. Je remets donc la version longue et "non-laravel" en attendant de trouver la version conforme à la norme.

Patriboom commented 3 years ago

Retour du courriel.

Je sais que ce ne sera pas encore au goût voulu ( pas de $headers ), mais je vous demande encore un peu de patience afin que je puisse intégrer la définition des $headers dans le fichier de config et que ceci soit modifiable.

Patriboom commented 3 years ago

Prêt pour tests.

Albatros78 commented 3 years ago

installation de v1.84d

Le follower ne recoit pas le mail à la création d'un nouveau ticket par l'administrateur. Il recoit un email à l'ajout d'un commentaire dans un ticket par l'administrateur

Patriboom commented 3 years ago

Vous pourrez avoir accès à une nouvelle version demain. J'y travaillerai aujourd'hui. Plusieurs changements sont en cours:

Albatros78 commented 3 years ago

Merci Patrick pour tous ces efforts :-)

Patriboom commented 3 years ago

Mise à jour majeure. Toute la gestion du courriel est modifiée.

Ce n'est pas fini, car de petits changements à un billet entraînent une pluie de courriels, mais ça progresse très bien.

Vous verrez aussi la page "Admnistration" comporte de nouveaux éléments. L'enregistrement des modifications n'est pas encore activée dans le processus, je dois vérifier des détails. Le fichier config.app.php comportera dorénavant quatre champs supplémentaires. Il se peut - de ce fait - que l'envoi de courriel se bloque. Si tel est le cas, voyez les ajouts au config.app.php dans celui qui s'appelle ...example Les champs sont: replyTo ->name replyTo -> email intro bye

Lignes 99 est suivantes: 'replyTo' => array( 'name' => 'Autre nom de retour', 'email' => 'adresse@serveur.net', ),

Aux lignes 131 et 132: 'intro' => 'Bonjour {first},', 'bye' => 'Au plaisir.'

Albatros78 commented 3 years ago

Hello,

J'ai ajouté dans mon config.app.php:

 'mail' => array( 
   'from' => array( 
    'name' => '[AFS BugTracker]',
    'email' => '<no_reply@afsoftware.fr>',
    ),  
    'replyTo' => array(
        'name' => 'Your E-Mail Name',
        'email' => 'name@domain.com',
    ),  

et aussi :

    'plainHTML' => 'multipart/mixed',
    'linelenght' => 80

    /*
    * Every emails you'll send from here will start by  intro and end by bye
    * Use those to include the recepient values:
    *   - {first} for his first name
    *   - {last} for his last name
    *   - {full} for his full name  ( first name and last name )
    */

    'intro' => 'Hello {first},',
    'bye' => 'Bye.'
    ),

Configuré comme cela, je n'ai pas la page de login. J'ai mis en commentaire / 'intro' => 'Hello {first},', 'bye' => 'Bye.' /

et la page de login est OK.

Aucune email pour la création d'un ticket ou ajout d'un commentaire. Aucun message d'erreur dans l'application et pas de log dans sendmail

:-(

Albatros78 commented 3 years ago

En cliquant sur le menu administration j'ai:

Undefined index: intro Location: E:\xampp\htdocs\bugtracker\app\laravel\view.php(353) : eval()'d code on line 116

Patriboom commented 3 years ago

Bonjour Albatro78,

il manque une virgule au bout de la ligne

'linelenght' => 80

qui devrait se lire :

'linelenght' => 80,

en ajoutant cette virgule, vous devriez pouvoir ôter le commentaire des lignes 'intro' et 'bye'.

Albatros78 commented 3 years ago

OK j'ai remis la virgule. C'est bon maintenant et la page d'administration s'affiche...

Pas d'emails !!!

Albatros78 commented 3 years ago

image

mais pad d'email ... je n'ai rein mis à jor sur la page juste un affichage ... C'est cool de pouvoir faire cela... Merci

Albatros78 commented 3 years ago

Bon je viens d'essayer une mise à jour... tout est rouge et le bouton ne fait rien :-)

image

Patriboom commented 3 years ago

Restons ici concentrés sur l'envoi de courriels

  1. lors de la création d'un billet
  2. lors de l'ajout d'étiquettes ( à venir )
  3. lors de la rédaction d'un commentaire
  4. lors de l'ajour d'un fichier ( à venir )
  5. lors de la fermeture d'un billet
  6. lors d'un changement de projet d'un billet
  7. lors d'un changement de responsable du billet.
  8. lors de la modification d'un projet

Assurons-nous ici de voir les icônes changer de couleur après un clic activant ou désactivant le suivi d'un billet ou d'un projet.

Il y eut un grand bouleversement du code hier. La seule manière de suivre l'évoluation de tout cela est de charger entièrement le tout dernier ZIP

Il y a trois chantiers en marche actuellement, nous aurons un billet par

Patriboom commented 3 years ago

État de la situation sur serveur de développement:

Émission d'un courriel, celui-ci reçu à bon port lors de ...

  1. la création d'un billet ----> fonctionnel
  2. l'ajout d'étiquette ----> fonctionnel
  3. le retrait d'étiquette ----> fonctionnel
  4. la rédaction d'un commentaire ----> fonctionnel
  5. l'ajour d'un fichier ----> fonctionnel
  6. la fermeture d'un billet ----> fonctionnel
  7. un changement de projet d'un billet
  8. un changement de responsable du billet ----> fonctionnel
  9. la modification d'un projet

Les fichiers modifiés ce soir seront en ligne dans quelques minutes.

Albatros78 commented 3 years ago

v1.84f installée

1- la création d'un billet ----> not OK 2 - l'ajout d'étiquette ---->etiquette je ne comprends pas . tag...pour tag . ---> OK reçu 3 - le retrait d'étiquette ----> pour tag ---> OK reçu 4 - la rédaction d'un commentaire ----> OK reçu 5 - l'ajour d'un fichier ----> OK reçu 6 - la fermeture d'un billet ----> OK reçu 7 - un changement de projet d'un billet ---> OK reçu 8 - un changement de responsable du billet ----> fonctionnel

Si fonction Assigned to pour changer d'utilisateur, j'ai l'erreur suivante: Message: Undefined variable: text Location: E:\xampp\htdocs\bugtracker\app\application\models\project\issue.php on line 347

9 - la modification d'un projet ---> Not OK (j'ai renommé le projet)

Super travail... cela devient beaucoup mieux... Merci