E-Mail anzeigen

Hallo,

ich habe mir ein Skript gebastelt das mir im WF eine Meldung mit dem neusten Email bringt.
Ich überlegte wie ich die letzte Mail bekomme und bin auf den Entschluss gekommen daß ich das Sendedatum mit dem LastMessege vergleich. Allerdings mag meine If-Abfrage die beiden nicht für gleich bewerten.
Hier mal das kommplette Skript:

<?
// Trigger: bei Änderung der Variable LastMessage

if ($IPS_SENDER == "Variable")
{
   $var = IPS_GetObject($IPS_VARIABLE);         // Last Message ID
	$imap_ID = $var['ParentID'];                 // IMAP ID
   $cache = IMAP_GetCachedMails($imap_ID);
   //print_r ($cache);
   
     if (count($cache) == 0)
	 	{
      //IPS_LogMessage("Email","return");
      return;
		}
		
		
	for ( $x = 0; $x < count($cache); $x++ )
	{
		//IPS_LogMessage("Email",$cache[$x]['Date']." | ".$IPS_VALUE);
		$zeit = $cache[$x]['Date'];

		if ( round($zeit) == $IPS_VALUE )
	   {
			//$datum    = date("d.m.Y H:i:s", $cache[$x]['Date']);
    		$absender = $cache[$x]['SenderAddress'] ;
    		//$betreff  = $cache[$x]['Subject'];
   		//$MailArrayUID = IMAP_GetMailEx($imap_ID,$cache[$x]['UID']);
   		//$inhalt   = substr($MailArrayUID['Text'],0,15) ;
   		IPS_LogMessage("Email","Übereinstimmung! | ".$absender);
   		WFC_SendNotification(42002 /*[WebFront Configurator]*/,"Neue Nachricht","von: ".$absender,"Information",0);

   	}
	}
}
?>

EDIT: funktionierendes Skript eingefügt

Kann das sein das es ein Problem mit einer Formatierung ist?

Keiner eine Ahnung?

Das If vergleicht doch gleiche Timestamp trotzdem ist es false?

Hallo,

ich habe das mal nachgestellt und die if-Bedingung ist immer falsch, weil zwei verschiedene Variablen-Typen verglichen werden.

Probiers mal hiermit

if ((int)$zeit == (int)$IPS_VALUE )

Vielen Dank, aber das hatte ich auch schon ausprobiert und gerade nochmals.
Leider ohne Erfolg.:mad:

probier es mal mit === anstatt ==

Vielen Dank, aber geht auch nicht.:frowning:

if ((int)$zeit === (int)$IPS_VALUE )
if ($zeit === $IPS_VALUE )

Was steht denn zur Zeit des Trigger in $IPS_VALUE.

$a = 123456789;
$b = 123456789;
if ((int)$a == (int)$b )
echo "gleich"; else echo "ungleich";

Die Antwort auf

IPS_LogMessage("Email",$cache[$x]['Date']." | ".$IPS_VALUE);

So hab noch mal ein bisschen rumprobiert:

$zeit ist vom Typ double. Sie enthält den Timestamp mit der Genauigkeit von µs, sie hat also Nachkommastellen.

mit

round($zeit) == $IPS_VALUE

hat es bei mir funktioniert.

True !!!:):smiley:

Vielen Dank.

Ich mach noch das fertig Skript in den 1.Post - vieleicht kanns einer verwenden.