IMAP Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • IMAP Problem

    HAllo zusammen.

    ICh bekomme bei folgendem Script einen fesen Fehler ausgegeben, kann mir allerdings nicht erklären woran das liegt

    PHP-Code:
    <?php
    // Connect to Mailbox
    $mailbox imap_open ("{server:110/pop3}INBOX""user""pass") or die("Keine Verbindung bzw. Login ins Postfach");
    // Mail holen
    $check imap_check($mailbox);
    $Anzahl_Nachrichten $check->Nmsgs;
    $Anzahl_Neuer_Nachrichten $check->Recent;
    $nmails=count($Anzahl_Neuer_Nachrichten);
    for (
    $j=1$j<=$nmails$j++)
    {
    $oStruct=imap_fetchstructure($mailbox$j);
    $nteile=count($oStruct->parts);
    if (
    $nteile>=2// Anhang vorhanden
    {
    for (
    $k=1;$k<$nteile;$k++)
    {
    $dateinamestrtolower($oStruct->parts[$k]->dparameters[0]->value); 
    $inhalt base64_decode(imap_fetchbody($mailbox$j$k+1)); 
    $fp fopen("$dateiname""w+"); 
    fwrite($fp$inhalt) or die ("Fehler beim schreiben der Datei");

    fclose($fp); 
    }
    }
    }

    //imap_delete($mailbox, 1);
    imap_expunge ($mailbox);


    // Mailbox schließen
    imap_close($mailbox);
    ?>

    Der Ausgegebene Fehler ist der folgende.
    Anscheinend kann er nicht schreiben, alledings hat der ordner den richtigen chmod (777)
    Code:
    Warning: fwrite(): supplied argument is not a valid stream resource in /srv/www/htdocs/web1/html/test/test.php on line 20
    Fehler beim schreiben der Datei
    Anwälte in Vulkane werfen -
    Wer anderen eine Bratwurst brät, der besitzt ein Bratwurstbratgerät!

  • #2
    Die Datei auch, falls schon vorhanden?

    Was steht in $dateiname? debugasuageb?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      hab ich ganz vergessen zu schreiben, $dateiname ist aus unerfindlichen gründen leer, obwohl ein bild im anhang ist
      Anwälte in Vulkane werfen -
      Wer anderen eine Bratwurst brät, der besitzt ein Bratwurstbratgerät!

      Kommentar


      • #4
        mach doch mal aus

        for ($j=1; $j<=$nmails; $j++)
        {
        $oStruct=imap_fetchstructure($mailbox, $j);

        PHP-Code:
        for ($j=1$j<=$nmails$j++)
        {
        $oStruct=imap_fetchstructure($mailbox$j);
        var_dump($oStruct); 
        [Test] MySQL cli Emulator

        Kommentar


        • #5
          Original geschrieben von NielsRunge
          mach doch mal aus

          for ($j=1; $j<=$nmails; $j++)
          {
          $oStruct=imap_fetchstructure($mailbox, $j);

          PHP-Code:
          for ($j=1$j<=$nmails$j++)
          {
          $oStruct=imap_fetchstructure($mailbox$j);
          var_dump($oStruct); 
          habe ich gemacht, jetzt gibt er mir folgendes aus:

          Code:
          object(stdClass)(12)
           { 
          ["type"]=>  int(1) 
          ["encoding"]=>  int(0) 
          ["ifsubtype"]=>  int(1) 
          ["subtype"]=>  string(5) "MIXED" 
          ["ifdescription"]=>  int(0) 
          ["ifid"]=>  int(0) 
          ["bytes"]=>  int(6142) 
          ["ifdisposition"]=>  int(0) 
          ["ifdparameters"]=>  int(0) 
          ["ifparameters"]=>  int(1) 
          ["parameters"]=>  array(1)
           {
           [0]=>  object(stdClass)(2)
           { 
          ["attribute"]=>  string(8) "BOUNDARY" 
          ["value"]=>  string(39) "----=_Part_443361_4097455.1095706732138" 
          } 
          }
           ["parts"]=>  array(2) 
          { 
          [0]=>  object(stdClass)(12) 
          { 
          ["type"]=>  int(0) 
          ["encoding"]=>  int(0) 
          ["ifsubtype"]=>  int(1) 
          ["subtype"]=>  string(5) "PLAIN" 
          ["ifdescription"]=>  int(0) 
          ["ifid"]=>  int(0) 
          ["lines"]=>  int(17) 
          ["bytes"]=>  int(728) 
          ["ifdisposition"]=>  int(0) 
          ["ifdparameters"]=>  int(0) 
          ["ifparameters"]=>  int(1) 
          ["parameters"]=>  array(1) 
          { 
          [0]=>  object(stdClass)(2) 
          { 
          ["attribute"]=>  string(7) "CHARSET" 
          ["value"]=>  string(10) "iso-8859-1" 
          } 
          } 
          } 
          [1]=>  object(stdClass)(13) 
          { 
          ["type"]=>  int(5) 
          ["encoding"]=>  int(3) 
          ["ifsubtype"]=>  int(1) 
          ["subtype"]=>  string(4) "JPEG" 
          ["ifdescription"]=>  int(0) 
          ["ifid"]=>  int(1) 
          ["id"]=>  string(15) "" 
          ["bytes"]=>  int(5032) 
          ["ifdisposition"]=>  int(1) 
          ["disposition"]=>  string(10) "ATTACHMENT" 
          ["ifdparameters"]=>  int(0) 
          ["ifparameters"]=>  int(0) 
          ["parameters"]=>  object(stdClass)(0) 
          { 
          } 
          } 
          } 
          } 
          Datei:
          Warning: fwrite(): supplied argument is not a valid stream resource in /srv/www/htdocs/web1/html/test/test.php on line 22
          Fehler beim schreiben der Datei
          Zuletzt geändert von Wotan; 21.09.2004, 11:43.
          Anwälte in Vulkane werfen -
          Wer anderen eine Bratwurst brät, der besitzt ein Bratwurstbratgerät!

          Kommentar


          • #6
            schön formatiert... wer soll das denn lesen? häää...

            naja, wie auch immer, hier
            PHP-Code:
            $dateinamestrtolower($oStruct->parts[$k]->dparameters[0]->value); 
            greifst Du also auf $oStruct zu, soweit ok, dann parts, hmm, sieht auch gut aus aber ein CTRL-F "dparameters" gibt mir kein Ergebnis.
            Es existiert "ifdparameters" was wohl nicht gemeint ist und dann noch "parameters" was ein Array ist was also hinhaut, dazu noch ein "value", das würde passen.

            Und wieso
            PHP-Code:
            for ($k=1;$k<$nteile;$k++) 
            warum nicht $k=0 ?

            Und warum "iso-8859-1" als Dateiname?
            [Test] MySQL cli Emulator

            Kommentar


            • #7
              also das script stammt ich meine von Wotan hier aus dem Forum, da scheint es auch wunderbar zu laufen
              Anwälte in Vulkane werfen -
              Wer anderen eine Bratwurst brät, der besitzt ein Bratwurstbratgerät!

              Kommentar


              • #8
                Da läuft es auch nur in soweit, wie ich keinen Datei-Anhänge nutze. Schau mal unter www.php.net dir die ganzen IMAP-Funktionen an. So wie ich das momentan sehe, hast du ein Problem mit den Zuweisungen der Dateianhänge. Kann jetzt aber aus dem Stehgreif nicht sagen was da falsch ist.
                *winks*
                Gilbert
                ------------------------------------------------
                Hilfe für eine Vielzahl von Problemen!!!
                http://www.1st-rootserver.de/

                Kommentar


                • #9
                  oha, so kompliziert hab ich mir das echt nicht vorgestellt *g*

                  Das einzige was ich erreichen will ist:

                  Cronjob holt halbstündlich neue Mails ab

                  wenn Anhang vorhanden
                  {
                  Anhang in Verzeichnis speichern
                  anhang dem absender in der datenbank zuordnen
                  mail löschen
                  }
                  ansonsten
                  {
                  mail löschen
                  }

                  hat von euch vieleicht schonmal jemand so ein Problem gelöst?
                  Anwälte in Vulkane werfen -
                  Wer anderen eine Bratwurst brät, der besitzt ein Bratwurstbratgerät!

                  Kommentar


                  • #10
                    Soweit hab ich das Problem gelöst das Mailanhänge gespeichert werden.

                    Soe siehts aus:

                    PHP-Code:
                    <?php
                    $mailbox 
                    imap_open ("{pop.server.de:110/pop3}INBOX""web1p54145""trans") or die("Keine Verbindung bzw. Login ins Postfach");
                    $check imap_check($mailbox);
                    $Anzahl_Nachrichten $check->Nmsgs;
                    $anzahl_neu $check->Recent;
                    $nmails=count($anzahl);
                    echo 
                    "neue Nachrichten: $anzahl_neu<br>";
                    for (
                    $j=1$j<=$anzahl_neu$j++)
                    {
                        
                    $sender imap_header($mailbox$j);
                        echo 
                    "Absender: " .$sender->from[0]->personal"<br>";
                        echo 
                    "Durchlauf: $j<br>";
                        
                    $oStruct=imap_fetchstructure($mailbox$j);
                        
                    $teile=count($oStruct->parts);
                        echo 
                    "Teile:$teile<br>";
                        echo 
                    "Typ: $oStruct->type<br>";
                        echo 
                    "Subtyp: $oStruct->subtype<br>";
                        echo 
                    "Größe: $oStruct->bytes<br>";
                        if (
                    $teile==2)
                        {
                              for (
                    $k=1;$k<$teile;$k++)
                            {
                                
                    $dateinamestrtolower($oStruct->parts[$k]->dparameters[0]->value);
                                echo 
                    "Dateiname: $dateiname<br>";
                                
                    $inhalt base64_decode(imap_fetchbody($mailbox,$j,2));
                                
                    $data=fopen($dateiname,"w+");
                                
                    fwrite($data,$inhalt);
                                
                    fclose($data);
                            }else{
                    //Hier beginnt das Problem, hier muss ich irgendwie rausfinden ob ein Bild im Body versteckt ist
                    }
                        }
                        echo 
                    $inhalt"<br>";
                        
                    //echo imap_fetchbody($mailbox,$j,1);
                        
                    echo "_____________________________________________________<br>";
                        
                    //imap_delete($mailbox,$j);
                    }
                    //imap_expunge($mailbox);
                    imap_close($mailbox);
                    ?>
                    (mit Kontrollausgaben)

                    Allerdings weiss ich jetzt nicht wie ich Bilder aus dem Quellcode Auslese welche im text als mime eingefügt sind.

                    Kann mir da wer auf die Sprünge helfen?
                    Zuletzt geändert von flyingMiATA; 21.09.2004, 13:38.
                    Anwälte in Vulkane werfen -
                    Wer anderen eine Bratwurst brät, der besitzt ein Bratwurstbratgerät!

                    Kommentar

                    Lädt...
                    X