Inhalt einer Kategorie als E-Mail versenden.

Hallo zusammen,
bin neu bei IP-Symcon, aber bin bereits begeistert, habe auch schon hinbekommen 30 MBus Wärmemengenzähler auszulesen und die Werte zusammen zu fassen, sieht im Webfront auch prima aus.
Nun möchte ich den Inhalt der Kategorie per E-Mail verschicken.
Oder geht es die Kategorie des Webfronts direkt als HTML Mail zu verschicken ?

Einfache E-Mail versenden war auch kein Problem nur wenn ich das alles in eine Variable
packen soll weis ich nicht wie das mit Zeilen Umbrüchen etc. gehen soll, für ein Beispiel wäre ich dankbar.

PS: hab im Forum auch schon gesucht doch wirklich fündig bin ich nicht geworden, da
bin ich vielleicht noch zu sehr im Anfängerstadium.

Besten Dank
Klaus

Hallo Klaus,

als Beispiel und Denkanstoß mal etwas verkürzt mein Script, dass mit bei Abwesenheit einmal täglich den Hausstatus mailt.


<?
$debug = TRUE;

function boolStringAufZu($bValue = false) {                      // returns string
  return ($bValue ? 'zu   ' : 'auf  ');
}
function boolStringEinAus($bValue = false) {                      // returns string
  return ($bValue ? 'ein  ' : 'aus  ');
}
function VarAktTime($varID) {
	$var = IPS_GetVariable($varID);
	$akt = date("d.m.Y H:i:s", $var['VariableChanged']);
	return ($akt);
}

$fname =  'anrufliste.html';
$fh_file = fopen ("../media/".$fname, "wb");
fwrite($fh_file,GetValueString(23324 /*[Kommunikation\Anrufe\Anrufliste]*/));
fclose( $fh_file);

$betreff = "Hausstatus ".date("Y.m.d")." ".date("H:i:s");
$message = 	"Haustür       : " .boolStringAufZu(GetValueBoolean(57727 /*[Flur_Windfang\Haustür Schloss\Haustür Status]*/)). " :: " . VarAktTime(57727 /*[Flur_Windfang\Haustür Schloss\Haustür Status]*/) .chr(13);
$message .= "Lüftungsstufe : " .GetValueInteger(20978 /*[Steuerung\Lüftung\Lüftungsstufe auswerten\Lueftungsstufe]*/). "     :: " . VarAktTime(20978 /*[Steuerung\Lüftung\Lüftungsstufe auswerten\Lueftungsstufe]*/).chr(13);
$message .= "Licht EG      : " .boolStringEinAus(GetValueBoolean(15794 /*[Visualisierung\LichtAnEG\LichtAnEG]*/)). " :: " . VarAktTime(15794 /*[Visualisierung\LichtAnEG\LichtAnEG]*/).chr(13);
$message .= chr(13)."Beregnung".chr(13)."--------------------------------------------------".chr(13);
$message .= "Verdunstung   : " .str_pad(sprintf("%01.1f",GetValueFloat(12831 /*[Steuerung\Gartenbewässerung\Verdunstung berechnen\Verdunstung]*/)), 5, " ", STR_PAD_LEFT). " :: " . VarAktTime(12831 /*[Steuerung\Gartenbewässerung\Verdunstung berechnen\Verdunstung]*/).chr(13);

if ($debug)
  IPS_LogMessage(IPS_GetName($_IPS['SELF']), "verschickt");

SMTP_SendMailAttachment(54174 /*[Kommunikation\E-Mail senden (SMTP)]*/, $betreff, $message, IPS_GetKernelDir()."/media/".$fname);

?>

Die functions sind „nur“ zur schöneren Darstellung von Werten.

Als Attachment wird die Anrufliste, von einem anderen Script als html-Datei generiert, mit angehängt.

wollte das schon etwas integrierter machen und habe es nun auch hinbekommen,
für alle die es gebrauchen können:

//  php script nur in einer Kategorie ablegen die Objektlinks enthält
//  dann werden alle Links mit Werten und Namen per E-Mail zusgeschickt
//  nutze das um Zählerstände automatisch per Mail zu bekommen.

 <?

$id_mail = 12345 /*[E-Mail senden (SMTP)]*/;

$timestamp = time();
$datum = date("d.m.Y - H:i", $timestamp);


$betreff = IPS_GetName (IPS_GetParent($IPS_SELF));

$mailtext = $betreff."  ". $datum."  

";

  $childs = (IPS_GetChildrenIDs(IPS_GetParent($IPS_SELF)));

    foreach ($childs as $child)
	 {
		if (IPS_LinkExists($child))    // prüft ob es ein Link ist
         {
			$zaehlernr =  IPS_GetLink($child);
    		$zaehleridstring = $zaehlernr ["TargetID"] . "  "; //löst den Link in ID auf
	 		$zaehlerid = floatval ($zaehleridstring);  //wandelt string zu float.
	 		$zaehlerstand = Getvalue($zaehlerid);    //  holt den WERT
	 		$zaehlerstand = str_pad($zaehlerstand, 10 ,' ', STR_PAD_LEFT); //formatiert Zählerstände auf gleiche Länge
	 		$zaehlername = IPS_GetName ($zaehlerid);   // holt Name des Zählers
	 		$zaehlername = str_pad($zaehlername, 53 ,' ', STR_PAD_RIGHT);  //formatiert Zählername auf gleiche Länge
	 		$text =  $zaehlername. $zaehlerstand . " kWh 
" ;
		   $textarray[] = $text;  // Array nur nötig um zu sortieren
         }
    }

asort ($textarray);  //sortieren aufsteigend
//print_r ($textarray);

foreach ($textarray as $einzeln)
{
$mailtext =$mailtext. $einzeln. "
";  // generieren des Mailtextes
}
echo $mailtext;

SMTP_SendMail($id_mail, $betreff, $mailtext);

?>