PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Umbau eines Scriptes (http://www.selfphp.de/forum/showthread.php?t=25091)

Sven4972 14.10.2013 20:20:56

Umbau eines Scriptes
 
Hallo,

mit folgendem Script lese ich den Text von E-Mails aus um diesen weiterzuverarbeiten:

PHP-Code:

error_reporting(E_ALL E_NOTICE);
$msg 1;
include 
"mail-erg-verbindung.inc";
$imapi imap_check($mbox);
$nmsg $imapi->Nmsgs;
if (
$nmsg == 0)
         {
        echo 
"Mailbox leer";
        exit;
         }
for (
$msg $msg <= $nmsg$msg++)
{
  
$header imap_fetchheader($mbox$msg);
  if (
preg_match('%boundary=(.*)%'$header$boundary))
  {
    
$boundary $boundary[1];
    if(
substr($boundary01) == '"'$boundary substr($boundary1, -2);
  }
  else
    
$boundary "";
    
    
$body imap_body($mbox$msg);

  
$u 0;
  
$mailparts explode("$boundary"$body);
  
  foreach (
$mailparts as $content)
 {
    
$u++;
    
    if (
$u== 2)
    {
      
$content trim($content);
      
$content substr($content0, -2);
      if (
preg_match('%filename=(.*)%'$content$fname))
      {
        
$fname $fname[1];
        if (
substr($fname01) == '"'$fname substr($fname1, -2);
      }
      if (
$p strpos($content"\r\n\r\n"))
        
$content trim(substr($content$p)); 
echo 
"Mail Nr:".$msg;
      
auswerten ($fname$content);
echo 
"<br><br>";      
    }
}

imap_delete($mbox$msg);

}
imap_expunge($mbox);
imap_close($mbox); 

Jetzt kommen dort auch E-Mails an die nicht weiterverarbeitet werden sollen und das Script soll so umgebaut werden das diese E-Mails gelöscht werden die einen anderen Betreff haben.

Zum Beispiel alle E-Mails mit dem Betreff "Spielergebnis" sollen erhalten bleiben und die restlichen E-Mails sollen gelöscht werden.

Wie müsste ich das Script ändern damit ich dieses erreiche?


LG Sven

sysop 15.10.2013 09:20:45

AW: Umbau eines Scriptes
 
Ungeprüft, aus dem Stegreif: Quelle: http://at2.php.net/manual/de/functio...h-overview.php

PHP-Code:

error_reporting(E_ALL E_NOTICE);
$msg 1;
include 
"mail-erg-verbindung.inc";
$imapi imap_check($mbox);

$result imap_fetch_overview($mbox,"1:{$imapi->Nmsgs}",0);

foreach (
$result as $overview
{
    
//  if(!stristr($overview->subject,'Spielergebnis')) // Betreff darf den Text Spielergebnis nicht enthalten
    
if($overview->subject != 'Spielergebnis'// Alle was nicht genau Spielergebnis ist 
    
{
         
// Diese Nachricht wird gelöscht....
         
echo "#{$overview->msgno} ({$overview->subject}) - From: {$overview->from} {$overview->subject}\n";
         
imap_delete($mbox$overview->msgno); // Löschen der Nachricht
     
}


Sollte alle Nachrichten löschen, die deinen Wünschen nicht entsprechen.

Sven4972 22.10.2013 16:22:21

AW: Umbau eines Scriptes
 
Hallo,

ich habe das jetzt mal eingebaut, es werden die falschen Mails aber nicht gelöscht.

Was kann denn da falsch sein?


LG Sven

sysop 23.10.2013 15:28:51

AW: Umbau eines Scriptes
 
Wie gesagt, ich habe das aus dem Stegreif (Ärmel) gepostet.

PHP-Code:

    if(!stristr($overview->subject,'Spielergebnis')) // Betreff darf den Text Spielergebnis nicht enthalten
//    if($overview->subject != 'Spielergebnis') // Alle was nicht genau Spielergebnis ist 
    
{
         
// Diese Nachricht wird gelöscht....
         
echo "#{$overview->msgno} ({$overview->subject}) - From: {$overview->from} {$overview->subject}\n";
         
// imap_delete($mbox, $overview->msgno); // Löschen der Nachricht
     


Tasten wir uns mal langsam an das Problem heran.
Obiger Code sollte erst mal die Mails listen, die den Begriff "Spielergebnis" NICHT im Betreff haben. Funktioniert das?

PS
Ich sehe in deinem Code nicht, dass du den Ordner öffnest. Macht das die .inc?
PHP-Code:

$mbox imap_open("{imap.example.org:143}INBOX""username""password")
     or die(
"can't connect: " imap_last_error()); 


Sven4972 24.10.2013 19:36:27

AW: Umbau eines Scriptes
 
Hallo,

ja das Postfach wird in der .inc geöffnet.

Die Mails werden aufgelistet.

Wenn ich die Zeile

PHP-Code:

imap_delete($mbox$overview->msgno); // Löschen der Nachricht 

in

PHP-Code:

imap_deleted($mbox$overview->msgno); // Löschen der Nachricht 

abändere werden die Mails zum löschen markiert.
Aber wenn ich es so lasse wie bei Deinem 1. Tipp dann löscht er sie nicht.


LG Sven

sysop 25.10.2013 10:00:05

AW: Umbau eines Scriptes
 
imap_deleted gibt es nicht (ich finde es zumindest nicht auf der PHP-Seite)

Lt- PHP-Handbuch macht imap_delete() nichts anderes als: eine Nachricht zum löschen markieren
http://www.selfphp.de/forum/search.php?searchid=3334871

Danach musst du noch mit einem imap_expunge() drüber, damit die Nachrichten auch gelöscht werden.
http://at2.php.net/manual/de/function.imap-expunge.php

Es gehört also letztendlich zum Abschluss noch
PHP-Code:

imap_expunge($mbox); 

in deinem Code.

Sven4972 09.12.2013 18:45:25

AW: Umbau eines Scriptes
 
Hallo,

ich bin jetzt erst dazu gekommen es zu testen.
Jetzt funktioniert alles so wie es soll.

Danke für Deine Hilfe.


LG Sven

richti007 22.12.2014 09:42:25

AW: Umbau eines Scriptes
 
Welche PHP-Version muss man installieren? Bei mir funktioniert es leider nicht.

sysop 22.12.2014 11:51:16

AW: Umbau eines Scriptes
 
Funktioniert nicht, ist leider keine Fehlermeldung ;-)

Lt. php.net sind diese Funktionen sowohl in PHP4 als auch PHP5 vorhanden, sollten also in allen gängigen Versionen funktionieren.

Ein häufiger Fehler scheint mir zu sein, dass diese Funktionen auf POP3-Postfächer falsch angewandt werden.

Zitat:

Hinweis:

Für POP3 Postfächer kann das Löschen-Flag nicht serverseitig zwischen Verbindungen gespeichert werden, markierte Nachrichten müssen daher noch wärend der aktuellen Verbindung mit imap_expunge() entfernt werden, ansonsten bleiben sie ohne Löschmarkierung weiter erhalten.


richti007 31.12.2014 13:08:51

AW: Umbau eines Scriptes
 
Zitat:

Zitat von sysop (Beitrag 147320)
Funktioniert nicht, ist leider keine Fehlermeldung ;-)

Lt. php.net sind diese Funktionen sowohl in PHP4 als auch PHP5 vorhanden, sollten also in allen gängigen Versionen funktionieren.

Ein häufiger Fehler scheint mir zu sein, dass diese Funktionen auf POP3-Postfächer falsch angewandt werden.

Vielen Dank. Jetzt ist Alles OK. Danke :) !!!


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:58:35 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.