Ich habe mir ein Skript gebastelt (mehrere Fragmente aus dem Forum zusammengefügt und ergänzt), mit dem ich eine POP-Mailbox checken kann und bei definierten Absenderadressen,Betreff und Mailinhalt Skripte ausführe - positive Ausführungen (sprich: Skriptname gefunden und gestartet) werden per Rückmail quittiert.
Das ganze funktioniert supergut (selbst über mehrere Stunden im 10 Sekundentimer) - es sei denn, man hat gerade keinen Zugriff mehr auf die POP-Mailbox, dann versuchts das Skript 2-3 Mal und versursacht dann einen Ausnahmefehler in der ips.exe - IPS wird gekilled.
Meldung im Skript:
„Script Queue Timeout!“
Meldung im Debug:
„Error PHP Engine
.
Error PHP Engine…Retry…
.
Error PHP Engine…Retry…“
20 Sekunden später der Ausnahmefehler.
Meine Versuche, vor IMAP-Aufruf den Status des Webservers abzuchecken (dns-check etc.), sind leider gescheitert - zudem bekomme ich keine Fehlermeldung vom imap
----Skriptschnipsel--------
imap_timeout(2);
$mailserver=„pop3..de";
$mailserver_out = "smtp..de“;
$username=„ips@.de";
$password="";
//Absender für Bestätigungsmail
$sendermail = "ips@**.de“;
$sendername = „IP-SYMCON-Statusmail“;
//Betreff für Bestätigungsmail
$subject_out = „IPS-Statusmail“;
//Connect to mailbox
$mailbox = imap_open ("{".$mailserver.":110/pop3}INBOX", $username, $password)
or die("MailRunScript: Keine Verbindung bzw. Login ins Postfach. ".imap_last_error());
// Mail auslesen
----Skriptschnipsel Ende—
Bevor jemand auf die Idee kommt, mir das Webinterface zu empfehlen…
Ich benutze ebenfalls das Webinterface und finde die bereits jetzt implementierten Funktionen echt super - auf die heating-Funktionen bin ich echt mal gespannt.
Ich benötige trotzdem die „Fernsteuerung per Mail“, weil ich weiß, dass manche Webproxys über die ich online gehe (von Arbeitsplatz aus) Positivlisten oder Blacklists haben, die ich nicht beeinflussen kann - eMail-senden ist aber immer drin (und zur Not funzt das auch mit SMS2mail) - damit bin ich auf jedenfall unabhängig…
Habe die Lösung zu meinem Timeout-Problem bei nicht anwortenden Servern gerade selber rausgefunden. Vor dem IMAP-open mache ich erst einen Domain-Socket-Verbindungstest mit 6-Sekündigem timeout. Schlägt der fehl, wird das Skript abgebrochen, gelingts innerhalb von 6 Sekunden, werden die Mails geholt und…
Für die, die es interessiert:
----Code----
//First: Mit Domain-Socket-Verbindung testen, ob der host überhaupt da ist
$fp = @fsockopen ($mailserver, 110, $errno, $errstr, 3);
if ($fp) { @fclose($fp);
echo "MailRunScript: Host gefunden „.$mailserver.“ „;
} else {
echo „Error connecting to Server „.$mailserver.“:110 "
.$errno.“ „.$errstr.“ ->Stopping MailRunScript“;
exit;
}
----Code----
Falls jemand Interesse an dem ganzen Code hat, bitte kurze PN an mich. (Vielleicht isz das ja sogar was für die "Nützliche PHP-Scripte Ecke ?)
Hier nochmal die Features:
Aufgabe:
Skript nach Eingang von Mail ausführen
Anwendungsgebiete:
Schalten per Mail oder SMS
Ablauf:
Checken der Mail
Interpretation Mail (Absender, Betreff, Skriptname)
Falls der Absender nicht bekannt ist (Definition über Variable) wird nicht gemacht, außer die Mail gelöscht
ebenso bei Betreff und Skriptname
falls alles in Ordnung ist, wird das Skript ausgeführt und der Absender bekommt eine Antwortmail, dass es funktioniert hat