imap_delete() - Mehrere E-Mails löschen
Sonntagsprogrammierer
- php
Hallo Forengemeinde!
Ich habe folgendes Problem:
In einer Datei steht eine Übersicht der E-Mails im Postfach und man kann jede mit einer Checkbox löschen, das heißt mehrere auf einmal.
Mit einzelnen Dateien löschen habe ich kein Problem, das funktioniert einwandfrei, doch wenn mehrere ausgewählt sind, funktioniert es nicht!
Die entsprechenden E-Mails werden in einem Array gespeichert.
Der Code:
$emails = $_POST["emails"];
$anzahl_emails = count($emails);
for ($i = 1; $i <= $anzahl_emails; $i++) {
if ($emails[$i]) {
imap_delete($mbox, $emails[$i]);
imap_expunge($mbox);
imap_close($mbox);
}
}
In $emails (array) sind die E-Mails gespeichert, mit count() ermittle ich die Anzahl der im Array gespeicherten E-Mails um dann in der for-Schleife alle E-Mails zu löschen, wo ein Eintrag existiert.
Hoffe, die Beschreibung hat jeder verstanden :$
Jedenfalls kommt folgende Fehlermeldung:
Warning: imap_delete(): 2 is not a valid imap resource in ...\delete.php on line 12
Danke für Eure Hilfe!
MfG
Moin!
Der Code:
Da fehlt der Befehl zum Öffnen der Mailbox (imap_open()).
$emails = $_POST["emails"];
$anzahl_emails = count($emails);
for ($i = 1; $i <= $anzahl_emails; $i++) {
if ($emails[$i]) {
imap_delete($mbox, $emails[$i]);
imap_expunge($mbox);
imap_close($mbox);
}
}In $emails (array) sind die E-Mails gespeichert, mit count() ermittle ich die Anzahl der im Array gespeicherten E-Mails um dann in der for-Schleife alle E-Mails zu löschen, wo ein Eintrag existiert.
foreach ist echt eine schönere Lösung.
Jedenfalls kommt folgende Fehlermeldung:
Warning: imap_delete(): 2 is not a valid imap resource in ...\delete.php on line 12
Seltsamerweise immer genau bei der ZWEITEN Mail, die markiert ist - nachdem imap_close() schon einmal aufgerufen wurde. Wundert dich das?
Ich würde auch imap_expunge() aus der Schleife rausnehmen, dürfte mehr Performance bringen.
- Sven Rautenberg
Hi!
Danke für Eure Hilfe! Das mit dem imap_close() war ja echt mal eine Blödheit von mir... imap_open() stand weiter oben im Dokument, das hab ich nicht reinkopiert ;)
MfG
echo $begrüßung;
$emails = $_POST["emails"];
Welchen Sinn hat diese Umkopiererei?
$anzahl_emails = count($emails);
for ($i = 1; $i <= $anzahl_emails; $i++) {
Ist der Key in $_POST["emails"] von 1 beginnend fortlaufend? Wenn nicht, nimm foreach.
if ($emails[$i]) {
Entnehme ich dieser Anweisung, dass die Keys doch nicht lückenlos fortlaufend sind?
imap_delete($mbox, $emails[$i]);
Warning: imap_delete(): 2 is not a valid imap resource in ...\delete.php on line 12
Laut Beschreibung der Funktion ist das der erste Parameter, der hier angezweifelt wird. Hast du überprüft, dass du richtige Argumente übergibst? (var_dump($variable);)
Außerdem scheint mir, dass du das error_reporting nicht auf E_ALL stehen hast. Wenn das der Fall ist, werden dir einige Hinweise auf Zugriffe auf nicht initialisierte/vorhandene Variablen nicht angezeigt.
echo "$verabschiedung $name";