+ Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 10 von 26
  1. #1
    Registriert seit
    Apr 2005
    Ort
    Hessen - nähe Gießen
    Beiträge
    330

    Post POP3-Server abfragen - vorhandene Nachrichten zählen

    Hier ein kleines (aber feines) Script für euch, um die Anzahl vorliegender Nachrichten auf einem POP3-Server zu prüfen.

    Nach dem Ausführen steht in der IPS-Statusvariablen (bitte im Script nach Euren Wünschen anpassen und bei IPS anlegen) die Anzahl der neuen Nachrichten auf dem Server.
    Weiterhin müssen der POP3-Server, der Username und das Passwort eingetragen werden. Ist im Script mit //HIER markiert.

    Das Script kann natürlich auch noch erweitert werden - Nachrichten herunterladen und anzeigen und Nachrichten löschen. Wer die weiteren Funktionen haben will kann sich ja nochmal melden.
    Ich nutze das Script um zu sehen ob neue Nachrichten in meinem Postfach vorhanden sind. Viel Spaß mit meinem kleinen Weihnachtsgeschenk.

    PHP-Code:
    //Connect POP3-Server
    function pop3_open($server$port)
    {
       global 
    $POP3_GLOBAL_STATUS;
       
    $pop3 fsockopen($server$port);
       if (
    $pop3 <= 0) return 0;
       
    $line fgets($pop31024);
       
    $ergebnis=substr($line,1,2);
       if(
    $ergebnis<>"OK")
          return 
    0;

       return 
    $pop3;
    }

    //User-Authentifizierung: USERNAME
    function pop3_user($pop3$user)
    {
       global 
    $POP3_GLOBAL_STATUS;
       
    fputs($pop3"USER $user\r\n");
       
    $line fgets($pop31024);
       
    $ergebnis=substr($line,1,2);
       if(
    $ergebnis<>"OK")
          return 
    0;

       return 
    1;
    }

    //User-Authentifizierung: PASSWORT
    function pop3_pass($pop3$pass)
    {
       global 
    $POP3_GLOBAL_STATUS;
       
    fputs($pop3"PASS $pass\r\n");
       
    $line fgets($pop31024);
       
    $ergebnis=substr($line,1,2);
       if(
    $ergebnis<>"OK")
          return 
    0;

       return 
    1;
    }


    //POP3-Mailliste laden
    function pop3_list($pop3)
    {
       global 
    $POP3_GLOBAL_STATUS;
       
    fputs($pop3"LIST\r\n");
       
    $line fgets($pop31024);
       
    $ergebnis=substr($line,1,2);
       if(
    $ergebnis<>"OK")
          return 
    0;

       
    $i 0;
       while(
    substr($line=fgets($pop31024),0,1)<>".")
       {
          
    $articles[$i] = $line;
          
    $i++;
       }
       
    $articles["count"] = $i;
       return 
    $articles;
    }


    //POP3-Verbindung schließen
    function pop3_quit($pop3)
    {
       global 
    $POP3_GLOBAL_STATUS;
       
    fputs($pop3"QUIT\r\n");
       
    $line fgets($pop31024);
       
    $ergebnis=substr($line,1,2);
       if(
    $ergebnis<>"OK")
          return 
    0;

       return 
    1;
    }

    //Hauptscript
    $pop3 pop3_open("hier den pop3-server.de eintragen","110"); //HIER
    if (!$pop3)
       echo 
    "[ERROR] Failed to connect\n";    

    if (!
    pop3_user($pop3"hier den username eintragen"))    //HIER
       
    echo "[ERROR] Username failed!\n";

    if (!
    pop3_pass($pop3"hier das password eintragen"))   //HIER
       
    echo "[ERROR] PASS failed!\n";

    $articles pop3_list($pop3);
    if (!
    $articles)
       echo 
    "[ERROR] LIST failed!\n";

    if (!
    pop3_quit($pop3))
       echo 
    "[ERROR] Close POP3 failed!\n";
     
    //hier die Anzahl der "gezählten" Nachrichten in die IPS-Variable ablegen
    SetValueInteger("Anzahl_Neue_Mails",(integer)$articles["count"]);
    echo 
    "es sind ".$articles["count"]." Nachrichten auf dem Server"
    Viel Erfolg und viel Spaß
    René

  2. #2
    Registriert seit
    May 2005
    Beiträge
    2,275

    sehr schönes Beispiel für die Arbeit mit Sockets!

    Für das beschriebene Problem kann man sich die Arbeit allerdings wesentlich einfacher machen, wenn man die imap Bibliothek benutzt, die kann entgegen dem Namen auch POP3. Die entsprechenden Funktionen sind imap_open, imap_status und imap_close. Insgesamt wird das dann ein 4-Zeiler.

    Tommi

  3. #3
    Registriert seit
    Apr 2005
    Ort
    Hessen - nähe Gießen
    Beiträge
    330

    Standard das hat leider nicht so geklappt

    Hi Tommi...

    das hatte ich auch so versucht. Leider ohne Erfolg.
    Ich habe von PHP 5.0.5 nur die imap.dll mittels extensions-anweisung in der PHP.ini eingebunden.
    beim imap_open-Befehl gab es dann aber probleme. erst blieb das scipt hängen (Timeout) und dann ist IPS abgestürzt.
    Vielleicht habe ich da aber auch was falsch gemacht. Ich weiß nicht ob man einfach einzelne DLL's bei IPS nachträglich einbinden darf. Muss man die _ts.dll auch austauschen?

  4. #4
    Registriert seit
    Nov 2005
    Ort
    Lüdenscheid - die Stadt des Lichts ;-)
    Beiträge
    268

    Zitat Zitat von Retiarius
    Hi Tommi...

    das hatte ich auch so versucht. Leider ohne Erfolg.
    Ich habe von PHP 5.0.5 nur die imap.dll mittels extensions-anweisung in der PHP.ini eingebunden.
    beim imap_open-Befehl gab es dann aber probleme. erst blieb das scipt hängen (Timeout) und dann ist IPS abgestürzt.
    Vielleicht habe ich da aber auch was falsch gemacht. Ich weiß nicht ob man einfach einzelne DLL's bei IPS nachträglich einbinden darf. Muss man die _ts.dll auch austauschen?
    Moin,

    hatte vor einiger Zeit ein Skript in den Anleitungen veröffentlicht, was die imap benutzt (IPS per Mail und SMS2Mail steuern)
    Link: http://www.ipsymcon.de/forum/showthr...highlight=mail
    Vielleicht kannst du ja etwas daraus gebrauchen ?
    Gruß

    cAtMaX

  5. #5
    Registriert seit
    May 2005
    Beiträge
    2,275

    Php in IPS ist meiner Meinung nach "nur" Version 5.0.4 (einfach mal phpinfo() ausgeben. Dazu muss auch die dll passen. Deine Fehlermeldung deutet geau darauf hin.
    Wie schon erwähnt wurde, gab es dazu schon mehrere funktionierende Lösungen im Forum, einfach mal nach imap suchen.

    Tommi

  6. #6
    Registriert seit
    Apr 2005
    Ort
    Hessen - nähe Gießen
    Beiträge
    330

    Standard Dll-Version

    so...nun hier noch die Antwort, damit der Beitrag rund wird.
    Ich habe dann mal die richtige DLL eigebunden (gleiche Version wie bei IPS) und dann geht alles ohne Probleme.
    Der Connect und die Abfrage wird dann wie schon tommi geschreiben wesentlich einfacher.

    Soll heißen - mit dem zusätzlichen Einbinden der imap.dll spart man eine Menge Code. Muss aber mittels der php.ini die dll einbinden.

  7. #7
    Registriert seit
    Nov 2005
    Ort
    Luxemburg
    Beiträge
    2,733

    Ich finde dieses Skript sehr interessant, doch wie kann ich emails in meinem GMAIL Account abfragen? Es ist auch POP3, hat nur als "Incoming Server" 995, doch das kann man ja im Skript einstellen, doch nur ist auch hier die Funktion "This server requires a secure connection SSL" noch zusätzlich ?
    Mit dem Outlook Express kann man das einstellen, und via Skript? Kann man das auch hier realisieren?

    mfG Franz



    11x HMS TF - 1x HMS T - 3x FHZ WLAN - 11x FHT80+TF - 4x FS20RST EcoRoll - 1x FS20SIG - 1x Comfort Comfort-Programmiergerät CRSZ-00/01 - 1x USB PC-Schnittstelle CKOZ-00/03 - 3x Dimmer CDAU-01/02 - 7x BIN 230VAC Eingang CBEU-02/01 - 6x Schaltaktor CSAU-01/01 - 1x Analog-Aktor 1-10V CAAE-01/02 - 5x Wandsender CTAA-02/02

  8. #8
    Registriert seit
    May 2005
    Beiträge
    2,275

    Das geht schon, theoretisch.
    PHP-Code:
    <?php 
    $mbox 
    imap_open ("{server:995/pop3/ssl/novalidate-cert}""user_id""password"); 
    ?>
    leider gibt es einen bekannten Bug in dieser Funktion unter Windows, weil die ssl und imap-Bibliotheken nicht so gut zusammen arbeiten.
    http://bugs.php.net/bug.php?id=36496

    Tommi

  9. #9
    Registriert seit
    Nov 2005
    Ort
    Luxemburg
    Beiträge
    2,733

    Danke,

    ich werde das mal probieren !



    11x HMS TF - 1x HMS T - 3x FHZ WLAN - 11x FHT80+TF - 4x FS20RST EcoRoll - 1x FS20SIG - 1x Comfort Comfort-Programmiergerät CRSZ-00/01 - 1x USB PC-Schnittstelle CKOZ-00/03 - 3x Dimmer CDAU-01/02 - 7x BIN 230VAC Eingang CBEU-02/01 - 6x Schaltaktor CSAU-01/01 - 1x Analog-Aktor 1-10V CAAE-01/02 - 5x Wandsender CTAA-02/02

  10. #10
    Registriert seit
    Nov 2005
    Ort
    Luxemburg
    Beiträge
    2,733

    In der Tat, es funktionniert nicht.

    Danke aber für den Hinweis

    mfg Franz



    11x HMS TF - 1x HMS T - 3x FHZ WLAN - 11x FHT80+TF - 4x FS20RST EcoRoll - 1x FS20SIG - 1x Comfort Comfort-Programmiergerät CRSZ-00/01 - 1x USB PC-Schnittstelle CKOZ-00/03 - 3x Dimmer CDAU-01/02 - 7x BIN 230VAC Eingang CBEU-02/01 - 6x Schaltaktor CSAU-01/01 - 1x Analog-Aktor 1-10V CAAE-01/02 - 5x Wandsender CTAA-02/02