Das folgende Beispiel zeigt, wie man die Anzahl der neuen Mails in einem POP3
Postfach eines Server abfragt und anschließend eine FS20 Komponente schaltet.
Am Besten richtet man sich hiefür ein separates Postfach ein.
Eine Verbindung zu einem lokalen POP3-Server (POP3 = Port 110) erhalten Sie mit:
$mbox = imap_open ("{localhost/pop3:110}INBOX", „user_id“, „password“);
Siehe auch: PHP: imap_open - Manual
Hier müssen Sie Ihren Server, Benutzernamen, sowie das Passwort eintragen.
Das Skript wird per Timer z .B. alle 10 Minuten ausgeführt und setzt eine bestehende
Internetverbindung voraus.
Werden neue Mails erkannt, so muß in der Betreffzeile „IPS“ stehen und in
der Nachricht der Name das von IP-Symcon auszuführende Skript in einer
eckigen Klammer [Lampe_An] oder (Lampe_Aus] (siehe Bild)
Dies soll lediglich nur die Grundlage für eigene Ideen sein, die gerne hier im
Forum veröffentlicht werden können.
Die // echo … habe ich absichtlich zu Testzwecken im Code gelassen.
Bei Fragen, Unklarheiten, Anregungen usw. bitte hier posten!
MST
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
//File: POP3Check.ips.php
// Triggered Variables:
// Timer Settings: 600
// Links:
// http://de3.php.net/manual/de/ref.imap.php
// http://de3.php.net/manual/de/function.substr.php
// http://de3.php.net/manual/de/function.strpos.php
// http://de2.php.net/manual/de/function.substr.php
@error_reporting(7);
// Connect to Mailbox
$mailbox = imap_open ("{pop.ipsymcon.de:110/pop3}INBOX", "PF_Name", "PF_Passwort")
// erzeugt eine Meldung und bricht das Parsing / die Abarbeitung des Skriptes ab
or die("Keine Verbindung bzw. Login ins Postfach");
// Mail holen
$check = imap_check($mailbox);
$num_msg = $check->Nmsgs;
$num_msg_new = $check->Recent;
// Mail auslesen
$nMessages = imap_num_msg($mailbox);
for($i = 1; $i <= $nMessages; $i++){
$header = imap_header($mailbox, $i);
$datum = $header->Date;
$m_id = $header->message_id;
$empfaenger = $header->toaddress;
$betreff = $header->subject;
$absender = $header->from[0]->personal;
$absender_email = $header->from[0]->mailbox."@".$header->from[0]->host;
$body = imap_body($mailbox,$i);
$text_koerper = $body;
$fheader = imap_fetchheader($mailbox,$i);
$nachricht = quoted_printable_decode(imap_fetchbody($mailbox, $i, 1));
}
// echo "Nachricht: ".$nachricht."xENDEx
";
// echo "Anzahl Nachrichten: ".$num_msg."
";
// echo "Neue Nachrichten: ".$num_msg_new."
";
if (($num_msg_new > 0) and ($betreff == "IPS")){
$k_auf = strpos($nachricht,"[");
$k_zu = strpos($nachricht,"]");
//echo $k_auf;
//echo $k_zu;
$script = substr($nachricht, $k_auf + 1 , $k_zu - $k_auf - 1 );
echo "Skript: ".$script."
";
IPS_RunScript($script);
//TTS_Speak(52151, "You have new mails");
}
// Mailbox schließen
imap_close($mailbox);
?>
Voraussetzug:
php_imap.dll (Aktuell PHP 5.1.6. Download von der PHP Seite)
und ein Eintrag in der php.ini
extension=php_imap.dll;