Mise en forme HTML : Recevoir le contenu du centre de message par mail

Bonjour à tous,

Jusqu’à la version 4.4 (il me semble), je recevais par email le contenu du centre de message (via une commande qui exécute un scénario lors d’un nouveau message) de manière bien formaté.

Depuis Jeedom v4.4, le contenu du mail n’est tellement lisible. C’est peut être du au bloc code que j’utilise, mais je suis bien incapable de trouver ce qui ne va pas.

Voici le bloc code que j’utilise :

// Récupere les textes présents dans le centre de message
$msg = "";
$listMessage = message::all();
foreach ($listMessage as $message){
  	$msg .= "[".$message->getDate()."]";
  	$msg .= " (".$message->getPlugin().")";
  	($message->getAction() != "") ? $msg .= " (Action : ".$message->getAction().")" : null;
	$msg .= " ".$message->getMessage()."\n";
}
$tags['#msg#'] = $msg;
$scenario->setTags($tags);

Et voici ce que cela donne maintenant dans un email :

Contenu du centre de message Jeedom :
[2024-05-22 09:02:53] (tgw) (Action : <a href="/index.php?v=d&p=log&logfile=tgw">Log tgw</a>) Erreur sur tgw::getGatewayVersionAsync() : Installation en cours, veuillez patienter.
[2024-05-22 08:59:54] (tgw) (Action : <a href="/index.php?v=d&p=log&logfile=tgw">Log tgw</a>) Erreur sur tgw::getGatewayVersionAsync() : Installation en cours, veuillez patienter.
[2024-05-22 08:00:33] (dyndns) (Action : <a href="/index.php?v=d&p=log&logfile=dyndns">Log dyndns</a>) Erreur sur la fonction cron15 du plugin : Echec de la requête HTTP : https://cloud.jeedom.com/service/myip cURL error : Operation timed out after 30001 milliseconds with 0 bytes received
[2024-05-22 07:05:16] (Debian) 1 mise à jour du système est disponible
[2024-05-22 00:00:26] (tgw) (Action : <a href="/index.php?v=d&m=tgw&p=tgw">Configuration Theengs Gateway</a>) Mise à jour disponible pour: TGW01, TGW02
[2024-05-21 19:30:23] (dyndns) (Action : <a href="/index.php?v=d&p=log&logfile=dyndns">Log dyndns</a>) Erreur sur la fonction cron15 du plugin : impossible de recuperer votre ip externe : <html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx</center>
</body>
</html>

En gros, c’est comme si Gmail ne savait plus interpréter le code html

Voici ce que je devrais recevoir :

Contenu du centre de message Jeedom :
[2024-05-22 09:02:53] (tgw) (Action : Log tgw) Erreur sur tgw::getGatewayVersionAsync() : Installation en cours, veuillez patienter.
[2024-05-22 08:59:54] (tgw) (Action : Log tgw) Erreur sur tgw::getGatewayVersionAsync() : Installation en cours, veuillez patienter.
[2024-05-22 08:00:33] (dyndns) (Action : Log dyndns) Erreur sur la fonction cron15 du plugin : Echec de la requête HTTP : https://cloud.jeedom.com/service/myip cURL error : Operation timed out after 30001 milliseconds with 0 bytes received
[2024-05-22 07:05:16] (Debian) 1 mise à jour du système est disponible
[2024-05-22 00:00:26] (tgw) (Action : Configuration Theengs Gateway) Mise à jour disponible pour: TGW01, TGW02
[2024-05-21 19:30:23] (dyndns) (Action : Log dyndns) Erreur sur la fonction cron15 du plugin : impossible de recuperer votre ip externe :

Si je créer un message avec le contenu de ce que je reçois de Jeedom dans Jeedom, alors mon email est correctement formaté.

Si une personne peut m’aider à corriger cela, merci d’avance !

Bonjour,
L’email est envoyé comment ?

Bonjour,

Via un scénario et le plugin Mail.

Juste sous le bloc code, ainsi :

<b>Contenu du centre de message Jeedom :</b>
#msg#

C’est pas tag(msg) qu’il faut mettre maintenant ?

Avec telegram, ca fonctionne:
image
image

Bonjour

Pourriez vous me dire se que vous utilisé en déclencheur de scénario

Merci pour le retour

Non, le #msg# est là, défini dans le bloc code. Donc c’est ce que je veux en fin de compte.

C’est Jeedom qui empêche le formatage je pense. Si je colle le même contenu dans un scénario dans le champ message d’un message du plugin mail, cela fonctionne bien.

Bonsoir.

C’est dans les paramètres de Jeedom, logs, vous pouvez définir des actions lors de la réception de message. Tout est bien indiqué.

Donc le scénario n’a pas de déclencheur, il est déclenché par ailleurs.

Bonjour

Oui j’ai parcourus un peu les message et j’ai trouvé assez facilement

Merci pour le retour

Bonjour Fabrice,

En 4.4, il y a un paramètre ( true / false ) à ajouter aux fonctions getAction et getMessage que vous appelez dans le bloc code.

// Récupère les textes présents dans le centre de message
// Modifié pour 4.4 paramètre à true aux appels des fonctions getAction et getMessage
$msg = "";
$listMessage = message::all();
foreach ($listMessage as $message){
  	$msg .= "[".$message->getDate()."]";
  	$msg .= " (".$message->getPlugin().")";
  	($message->getAction(true) != "") ? $msg .= " (Action : ".$message->getAction(true).")" : null;
	$msg .= " ".$message->getMessage(true)."\r\n";
}
$tags['#msg#'] = $msg;
$scenario->setTags($tags);
// $scenario->setLog($msg);

Ça donne un résultat différent dans Telegram:
image
Sans paramètre pour celui de 10:56 et avec true pour celui de 11:55

Je n’ai pas testé dans le mail. Pas encore réussi à envoyer un email avec le plugin.
Mes tests d’hier étaient en 4.3.

4 « J'aime »

Bonsoir et merci pour votre réponse,

Je viens de faire la correction et… merci pour la solution !

Avant :
[2024-05-22 11:31:28] (tgw) (Action : <a href="/index.php?v=d&p=tgw&m=tgw&id=1379">Equipement</a>) [Jeedom][TGW02] est hors ligne

Maintenant :
[2024-05-23 19:38:34] (tgw) (Action : Equipement) [Jeedom][TGW02] est hors ligne

Merci beaucoup jpty

1 « J'aime »

Ha…

Je viens d’avoir un vrai message et voici le contenu :


[2024-05-23 22:00:32] (dyndns) (Action : Log dyndns) Erreur sur la fonction cron15 du plugin : impossible de recuperer votre ip externe : <html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx</center>
</body>
</html>

Il y a encore un partie qui reste brut.

C’est peut être spécifique à ce plugin ?
Ou à l’usage du bloc code.

Si j’utilise le tag #message# je reçois l’email avec le code qui est interprété.

Vous auriez le message affiché par le Centre de messages ?

Le bloc code utilise maintenant le même code que la modale du Centre de messages.

Bonjour,

Je n’ai que ce message, j’avais supprimé les autres pour tester

Bonjour @Fabrice,

Oui, c’est spécifique a ce plugin a mon avis.
C’est du coté du service jeedom (service/myip) qui renvoie direct du html dans le corps du message (504 Gateway Time-out…).

Il faudrait trouvé pourquoi le service cloud n’arrive pas a obtenir ton ip…

Tu peut tricher dans ton scénario en attendant :

// Récupère les textes présents dans le centre de message
// Modifié pour 4.4 paramètre à true aux appels des fonctions getAction et getMessage
// Suppression des balises html (strip_tags) dans l'appel de la fonction getMessage.
$msg = "";
$listMessage = message::all();
foreach ($listMessage as $message){
  	$msg .= "[".$message->getDate()."]";
  	$msg .= " (".$message->getPlugin().")";
  	($message->getAction(true) != "") ? $msg .= " (Action : ".$message->getAction(true).")" : null;
	$msg .= " ".strip_tags($message->getMessage(true))."\r\n";
}
  
$tags['#msg#'] = $msg;
$scenario->setTags($tags);

Le résultat sera pas très esthétique, mais ce sera mieux que du html :

image

1 « J'aime »

Bonjour et merci de ta réponse.

Pour le problème, c’est rien, c’est dû à un surplus de requêtes coté Jeedom (Loïc a réalisé une modification en bêta pour corriger cela).

Pour les logs, j’attends le prochain :wink:

bonne journée à tous

2 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.