cr: imap-Frage

Hallo!

ich möchte mittels php ein Postfach auslesen lassen, und nur emails mit einem genau definierten Betreff sollen weiterverarbeitet werden...leider hänge ich dabei...iwie nimmt php meine if-anweisung nicht an. hier mal der code dazu:

<?php
$mailbox = imap_open('{sslmailpool.ispgateway.de:993/imap/ssl/novalidate-cert}INBOX', 'EMAIL', 'PASSWORT'); // Verbindung aufbauen
$mails = imap_fetch_overview($mailbox,"1:*", FT_UID); // Holt eine Übersicht aller Emails
$emailanzahl = imap_num_msg($mailbox); // Emails zählen
$emailanzahl = $emailanzahl - 1;
$test = $mails[$emailanzahl];
for($i=0; $emailanzahl>-1; $i++)
{
$neu = "$test->subject";
if($neu == "hallo") // DIESE IF_ANWEISUNG WIRD NICHT AUSGEFÜHRT BZW DER VERGLEICH FINDET NICHT STATT DA DIE VARIABLE NEU LEER IST
{
echo "hat geklappt";
}

}
imap_close($mailbox);
?>

  1. Hi,

    iwie nimmt php meine if-anweisung nicht an.

    Die Formulierung ist absoluter Blödsinn.

    $neu = "$test->subject";
    if($neu == "hallo") // DIESE IF_ANWEISUNG WIRD NICHT AUSGEFÜHRT BZW DER VERGLEICH FINDET NICHT STATT DA DIE VARIABLE NEU LEER IST

    Ja dann schreib halt vorher was rein!

    Gewöhne dir den Unsinn ab, vollkommen unnötigerweise Variablen noch mal in einen String zu verpacken, wenn du sie einer anderen Variablen zuweisen willst.

    Wofür brauchst du $neu überhaupt in dem Code? Wenn $test->subject den Wert enthält, den du vergleichen willst - dann notiere halt schlicht und einfach auch $test->subject an der Stelle im Vergleich.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Wofür brauchst du $neu überhaupt in dem Code? Wenn $test->subject den Wert enthält, den du vergleichen willst - dann notiere halt schlicht und einfach auch $test->subject an der Stelle im Vergleich.

      das hat ja leider nicht geklappt weshalb ich gedacht hatte das liegt vlt daran das ich das direkt in die if-anweisung notiert habe...hab das aber nicht mehr zurückgeändert....

      sinn und zweck ist, dass ich bestimmte emails eines postfaches auf dem webserver auslesen möchte...

      also wenn ich

      if($test->subject == "hallo")

      passiert nichts bowohl eine email mit dem betreff im postfach ist...

      1. Moin!

        if($test->subject == "hallo")
        passiert nichts bowohl eine email mit dem betreff im postfach ist...

        Du hast $neu = "$test->subject"; geschrieben. Da kannst Du auch gleich $neu = $test . '->subject'; notieren.

        Du hast falsch behauptet, $neu sei leer.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

      2. Hi,

        also wenn ich

        if($test->subject == "hallo")

        passiert nichts bowohl eine email mit dem betreff im postfach ist...

        Vergleiche Wunsch(-denken) und Wirklichkeit - mache Kontrollausgaben (var_dump), kurz: Betreibe Debugging!

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Moin!

    Da ist zu viel falsche drin, als dass ich das einzeln korrigieren würde. Ich nehme deshalb das Beispiel von PHP.net und baue Deine Abfrage ein:

    <?php  
    $mbox = imap_open("{imap.example.org:143}INBOX", "username", "password")  
         or die("can't connect: " . imap_last_error());  
      
    $MC = imap_check($mbox);  
      
    // Hole eine Übersicht aller Nachrichten in der INBOX  
    $result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0);  
    foreach ($result as $overview) { /* viel besser als Deine falsche for- Schleife */  
        if ('hallo' == trim($overview->subject)) { /* Dein Vergleich - nur hier klappt er */  
            echo "#{$overview->msgno} ({$overview->date}) - From: {$overview->from {$overview->subject}\n";  
        }  
    }  
    imap_close($mbox);  
    ?>
    

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Danke

      cr