You are not logged in.
Bonjour,
J'ai créer un plugin dans lequel j'ai besoin d'envoyer des mails, après plusieurs recherches et plusieurs test j'ai vu que la class PHPMailer.php était utilisé par GLPI pour envoyer des mails.
Mais j'ai du mal à comprendre et à savoir quelle fonction utilisé pour envoyer des mails en définissant un expéditeur et un destinataire.
Pouvez-vous m'indiquer quelle méthode utilisé ?
Merci d'avance
Last edited by Rey0313 (2022-08-26 15:24:00)
Glpi 10.0.3
Offline
Bonjour,
Si vous souhaitez éviter de créer de nouvelles notifications et d'utiliser le système de notification, un e-mail simple peut être envoyé à l'aide de la classe GLPIMailer qui étend PHPMailer.
Il définira certaines des configurations dont il peut avoir besoin, comme les paramètres de proxy (s'ils sont configurés), les paramètres SMTP, etc. Ensuite, vous pouvez l'utiliser comme PHPMailer.
https://github.com/PHPMailer/PHPMailer/wiki/Tutorial
Les méthodes que vous pourriez avoir besoin/souhaiter utiliser sur une instance de GLPIMailer sont :
"SetFrom", "AddReplyTo", "AddAddress", "Send"
Les propriétés que vous voudrez peut-être modifier :
"Subject", "Body"
Vous pouvez vous référer au code GLPI qui envoie les e-mails de notification pour plus d'informations sur l'utilisation.
src/NotificationEventMailing.php dans la fonction "envoyer".
Last edited by cconard96 (2022-08-23 14:40:54)
GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.
Offline
Bonjour,
Merci pour votre réponse, mon objectif est effectivement juste d'envoyer un mail avec un expéditeur et destinataire n'ayant aucune adresse mail enregistré et un corps de mail et un sujet qui change.
Et pour envoyer ce mail j'aimerais utiliser la config smtp que j'ai mise pour les notifications glpi.
Je vais regarder la classe GLPIMailer.php et je reviendrez vers vous, si j'ai d'autres questions.
Merci encore
Last edited by Rey0313 (2022-08-23 14:46:11)
Glpi 10.0.3
Offline
Bonjour,
Je reviens vers vous après plusieurs essais, j'ai beau instancier la classe GLPIMailer je ne réussit pas à envoyer des mails.
J'utiliser une instance des méthodes setFrom() et addAddress() pour définir mon expéditeur et mon destinataire mais lorsque que j'appelle la méthode send() le mail en part pas.
J'ai aussi essayer de définir en brut dans mon hook.php (là où je souhaite faire l'envoi de mail) les configurations smtp avec la variable global $CFG_GLPI.
Mais cela ne marche toujours pas.
Pouvez-vous m'aider ?
Merci d'avance
Last edited by Rey0313 (2022-08-25 11:44:53)
Glpi 10.0.3
Offline
Bonjour,
Avez-vous des erreurs à partir de ce moment dans l'un des journaux dans "files/_log" ? Plus précisément, "php-errors.log" et "mail-errors.log" sont les plus susceptibles de contenir des informations pertinentes.
GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.
Offline
Je n'ai pas de log d'erreur actuellement mais lors de mes tests j'ai une erreur qui est revenu plusieurs fois :
[2022-08-24 15:20:12] glpiphplog.NOTICE: *** PHP Notice (8): Undefined offset: 1 in C:\xampp\htdocs\glpi\glpi\src\GLPIMailer.php at line 91
Backtrace :
plugins\envoi_suivi\hook.php:57 GLPIMailer->__construct()
plugins\envoi_suivi\hook.php:38 envoi_mail()
src\Plugin.php:1464 envoi_suivi_updateitem_called()
src\CommonDBTM.php:1655 Plugin::doHook()
src\CommonITILActor.php:428 CommonDBTM->update()
src\Ticket_User.php:59 CommonITILActor->post_addItem()
src\CommonDBTM.php:1298 Ticket_User->post_addItem()
src\Api\API.php:1832 CommonDBTM->add()
src\Api\APIRest.php:294 Glpi\Api\API->createItems()
apirest.php:58 Glpi\Api\APIRest->call()
Dans php-errors.log.
Je n'ai rien touché au fichier GLPIMailer.php
Last edited by Rey0313 (2022-08-25 14:33:44)
Glpi 10.0.3
Offline
Je pense qu'il peut y avoir un problème avec les données de session qui ne sont pas chargées correctement lors des appels d'API.
L'erreur provient de la ligne 91, qui vérifie si le mode d'utilisation est défini sur le mode débogage dans la session, mais l'erreur donne l'impression que l'indicateur est complètement manquant.
Ce n'est qu'un avis cependant, donc je ne pense pas que cela casserait quoi que ce soit (cela agirait simplement comme si vous n'étiez pas en mode débogage) et ne devrait pas affecter l'envoi de courriers électroniques dans l'interface Web.
GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.
Offline
Bonjour,
Effectivement, j'ai une erreur liée à l'api que je n'ai pas précisé car je ne pensais pas que l'envoi d'un mail était lié à l'api.
La voici :
[2022-08-25 10:48:01] glpiphplog.NOTICE: *** PHP Notice (8): Undefined index: errors in C:\xampp\htdocs\glpi\glpi\src\Api\API.php at line 2350
Backtrace :
src\Api\API.php:1837 Glpi\Api\API->getGlpiLastMessage()
src\Api\APIRest.php:294 Glpi\Api\API->createItems()
apirest.php:58 Glpi\Api\APIRest->call()
Avez-vous une idée de comment je pourrais envoyer des mails ?
Last edited by Rey0313 (2022-08-26 09:50:39)
Glpi 10.0.3
Offline
Re Bonjour,
Je reviens vers vous car je viens de trouver comment utiliser le système de mailing pour envoyer des mails avec les configurations smtp enregistrées au préalable.
Voici comment j'ai fait :
$GLPIMailer = new GLPIMailer(); // Instance de GLPIMailer
$GLPIMailer -> Subject = $sujet; // Définit du sujet du mail
$GLPIMailer -> msgHTML($corps); // Définit le corps du mail
$GLPIMailer -> addAddress($dest); // Définit le destinataire
$GLPIMailer -> send(); // Envoi le mail
C'est en fait très simple,
Merci cconard96 de m'avoir idée
Glpi 10.0.3
Offline