Inhalt eines Strings per Mail versenden

Hallo,

ich hab da eine Idee die sicher nicht neu ist, ich habe aber nichts im Forum gefunden.

Ich habe das Wetterwarnskript aus dem Forum angepasst und es funktioniert, ich möchte aber im Fall einer Wetterwarnung den Inhalt der Warnung per Mail auf mein Handy senden.

Kann mir jemand sagen wie ich nur den Text senden kann.

Hier mal das geänderte Skript:

<?
$id_warn = 33883 /*[Wetterwarnung\Warn CW]*/; // BoolVar
$id_text = 52819 /*[Wetterwarnung\Calw]*/; // StringVar

// URL zeigt auf die detailierte Warnung des gewünschten Ortes (anklicken in der Warnkarte
$s = file_get_contents( "http://www.dwd.de/dyn/app/ws/html/reports/CWX_warning_de.html#WS_ANCHOR_0" );
$warnung = "";
if( empty($s) )
   {  IPS_LogMessage( IPS_GetName($IPS_SELF), "can't get url content");   return;  }
$a = explode( "
", $s);
$w = preg_grep( '#</p>#', $a);

while ( list ( $key, $val ) = each ( $w ) )
{
    $current = formatText( str_replace("</p>","",$val) );
    if ( substr_count( $current, "Amtliche " )) {
       $current = '<strong>' . $current . '</strong>';
    }
    if ( substr_count( $current, "am:" )) {
       $current .= '<br />';
    }
    // Um Platz zu sparen, die Ausgabe einiger Zeilen unterdrücken
    switch ($current) {
        case "für die Region Calw ":
        break;
        case "DWD / RZ Hamburg ":
            $warnung .= '---<br />';
        break;
        default:
            $warnung .= $current . '<br />';
        break;
    }
}

if (empty($warnung)) {
   $warnung = "Es sind keine Warnungen für Landkreis Calw vorhanden.";
    SetValueBoolean($id_warn, false);
} else {
    SetValueBoolean($id_warn, true);
}

$browser='
<html>
<head>
<style type="text/css" media="screen">
body  {  background-color:#D4D0C8;
            font-family: Arial;
            font-size:14px;
         margin:0;
         padding:10px 5px 0px 5px;
         }

div {    margin:0;
         padding:0px 0px 0px 0px;
         }
</style>
</head>
<body scroll="no"><div>'
.$warnung.
'</div>
</body>
</html>';
SetValueString($id_text, $browser);


// Textformatierung
function formatText($text)
{
    $text = html_entity_decode($text);
    $text = str_replace("ö", "ö", $text);
    $text = str_replace("Ãœ", "Ü", $text);
    $text = str_replace("ü", "ü", $text);
    $text = str_replace("ä", "ä", $text);
    $text = str_replace("ß", "ß", $text);
    $text = str_replace("&ndash;", "-", $text);
    $text = str_replace('&#039;', "`", $text);
    $text = str_replace("&", "&", $text);
    $text = str_replace("Ö", "Ö", $text);
    $text = str_replace("„", "\"", $text);
    $text = str_replace("“", "\"", $text);
    $text = str_replace("–", "-", $text);
    $text = str_replace("„", "\"", $text);
    $text = str_replace("“", "\"", $text);
    $text = str_replace("„", "\"", $text);
    $text = str_replace("–", "-", $text);
    $text = str_replace("–", "-", $text);
    $text = str_replace("Ä", "Ä", $text);
    return $text;
}

?&gt;

Wenn es generell nur um den Versand von Emails geht dann schau doch mal hier

SMTP: IP-Symcon :: Automatisierungssoftware

und hier

SMTP_SendMailEx: IP-Symcon :: Automatisierungssoftware

nach.

Damit solltest Du den Inhalt einer Textvariable problemlos versenden können. Hast Du ein iPhone suche auch mal nach Prowl hier im Forum. Da geht das auch als Pushmail.

Es geht nicht um den Mailversand an sich, das funktioniert.
Ich möchte den Inhalt des Skripts in die Mailschreiben, bzw. eine Temperatur oder ähnliches.

:confused: hä? Du willst den Code per mail versenden?? wirklich?

wenn Du nur „Inhalt“ versenden willst, ginge das so (Auszug):


$uhrzeit 						= date("H:i.s");
$datum 							= date("d.m.Y");
$mailsubject 				= "IPS: Reaggregation ist abgeschlossen";
$mailcontend 				= "IPS meldet: die Reaggregation ist am $datum um $uhrzeit Uhr abgeschlossen worden. Es wurden $history_count Variablen reaggregiert";

// Mail versenden
SMTP_SendMail($sendmail, "$mailsubject", "$mailcontend");

Nein.

Ich möchte folgendes:

Es gibt eine Wetterwarnung beim DWD, diese sehe ich im Webfront.
Da ich nicht immer auf das Webfront schaue, hätte ich gerne eine Mail mit dem Inhalt der Wetterwarnung. Diese aktualisiere ich im Abstand von 30 Minuten, sobald die Warnung auf True geht (Warnung vorhanden) möchte ich den Inhalt versenden.

Des Weiteren habe ich den Wunsch z.B. einmal am Tag eine Mail mit bestimmten Variablen z.B. Außentemperatur zu versenden.

Meine Frage ist wie kann ich in eine Mail eine ausgelesene Variable packen.

müsste nun mit Posting #5 beantwortet sein

Noch nicht ganz, ich habe folgendes in meinem Sendmail folgende php Zeile eingefügt:
SMTP_SendMail($IPS_TARGET, „Test“,GetValueString(52819));

Und diesen Inhalt erhalte ich in meiner Mail:

<html>
<head>
<style type=„text/css“ media=„screen“>
body { background-color:#D4D0C8;
font-family: Arial;
font-size:14px;
margin:0;
padding:10px 5px 0px 5px;
}

div { margin:0;
padding:0px 0px 0px 0px;
}
</style>
</head>
<body scroll=„no“><div>Es sind keine Warnungen für Landkreis Calw vorhanden.</div> </body> </html>

Eigentlich schon: IPS schickt dir genau den Inhalt deiner Variable. Das war genau die Frage… Nur, dass es sich um einen Code für ein html-Dokument handelt.

Du musst im Heder mit angeben, dass es sich um HTML Content handelt.
Ich kann dir Morgen schicken wie ich mit IPS HTML Mails verschicke. Habe gerade keinen Zugriff darauf.

Hier mal ein Ausschnitt aus php.net

$header**='MIME-Version:1.0’."
„;
$header*.=*'Content-type:text/html;charset=iso-8859-1’.
";

Sonst wird einfach im Mailprogramm der html Code als reiner Text angezeigt.

Gruß
Thorsten

Ich würd es einfach so machen.

SetValueString($id_text, strip_tags($browser)); 

@RWN
Ich verstehe nicht wie ich diese Zeile einfügen muss, ich muss doch auf den String verweisen den ich auslesen möchte, was mach ich mit dem $ID_Text den muss ich doch erst anlegen, oder verstehe ich das falsch?

$browser wäre der Inhalt von GetValueString(52819), muss also vorher zugewiesen werden, $id_text ist die variable, wor der extrahierte Text reingeschrieben wird. Natürlich kann man das alternativ auch gleich per Mail versenden

Ich dachte ich hätte das jetzt verstanden, aber jetzt bekomme ich eine leere Email.

So habe ich es jetzt in das Feld eingetragen:

<?
$browser = GetValueString(52819);
SetValueString($id_text, strip_tags($browser));
SMTP_SendMail($IPS_TARGET, „Test“, $id_text);
?>

was wird denn in die Variable „$id_text“ reingeschrieben?

ach ja: die PHP-Tags oben rechts dürfen auch verwendet werden;)

was zum lernen.

kurz und funktioniert.

Text noch formatieren eventuell speichern bzw. versenden


$s = file_get_contents( "http://www.dwd.de/dyn/app/ws/html/reports/CWX_warning_de.html#WS_ANCHOR_0" );
$a = explode( "
", $s);
// print_r( $a);

$a14 = trim ( $a[14] );
$a25 = trim ( $a[25] );
$a29 = trim ( $a[29] );

$id_text = $a14." ".$a25." ".$a29;
echo $id_text;

SetValue(58877, $id_text);

@Raketenschnecke
Dann habe ich es wohl doch nicht verstanden, ich dachte durch den Befehl SetValueString erstelle ich eine neue Variable mit id_text.

Sorry wenn ich mich doof anstelle, aber ich will es nicht einfach kopieren sondern verstehen.

So verständlicher.

$s = file_get_contents( "http://www.dwd.de/dyn/app/ws/html/reports/CWX_warning_de.html#WS_ANCHOR_0" );

print_r(strip_tags(utf8_decode($s)));

SMTP_SendMail($_IPS['TARGET'], "Test", strip_tags(utf8_decode($s)));

hilfreich wäre, wenn du mit eigenen Worten (und frei von Pseudo-Wissen) klar und deutlich beschreibst, wo du stehst, was genau du nicht verstehst und was du erreichen willst (nicht wie du es erreichen willst => das machen wir gemeinsam).
Wie sollen wir sonst herausfinden, wo Du know-how-technisch stehst und Deine fehlenden Wissenslücken auffüllen?
Das Auffüllen machen wir gern (wir haben alle mal angefangen), nur müsste ich wissen, an welcher Stelle…

da sieht man den Profi