CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
14.10.2013, 20:20:56
|
Anfänger
|
|
Registriert seit: Jun 2009
Alter: 52
Beiträge: 34
|
|
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 = 1 ; $msg <= $nmsg; $msg++)
{
$header = imap_fetchheader($mbox, $msg);
if (preg_match('%boundary=(.*)%', $header, $boundary))
{
$boundary = $boundary[1];
if(substr($boundary, 0, 1) == '"') $boundary = substr($boundary, 1, -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($content, 0, -2);
if (preg_match('%filename=(.*)%', $content, $fname))
{
$fname = $fname[1];
if (substr($fname, 0, 1) == '"') $fname = substr($fname, 1, -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
|
15.10.2013, 09:20:45
|
Member
|
|
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
|
|
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.
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
|
22.10.2013, 16:22:21
|
Anfänger
|
|
Registriert seit: Jun 2009
Alter: 52
Beiträge: 34
|
|
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
|
23.10.2013, 15:28:51
|
Member
|
|
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
|
|
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());
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
|
24.10.2013, 19:36:27
|
Anfänger
|
|
Registriert seit: Jun 2009
Alter: 52
Beiträge: 34
|
|
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
|
25.10.2013, 10:00:05
|
Member
|
|
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
|
|
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.
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
|
09.12.2013, 18:45:25
|
Anfänger
|
|
Registriert seit: Jun 2009
Alter: 52
Beiträge: 34
|
|
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
|
22.12.2014, 09:42:25
|
Anfänger
|
|
Registriert seit: Dec 2014
Alter: 43
Beiträge: 3
|
|
AW: Umbau eines Scriptes
Welche PHP-Version muss man installieren? Bei mir funktioniert es leider nicht.
|
22.12.2014, 11:51:16
|
Member
|
|
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
|
|
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.
|
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
|
31.12.2014, 13:08:51
|
Anfänger
|
|
Registriert seit: Dec 2014
Alter: 43
Beiträge: 3
|
|
AW: Umbau eines Scriptes
Zitat:
Zitat von sysop
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 :) !!!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:20:20 Uhr.
|