PHP IMAP Emails verschieben

Hallo!

Neuerdings habe ich mein EMail Konto auf IMAP umgestellt.
Leider legt fast jedes Gerät eigene Gesendet/Gelöscht Ordner auf dem Server an. So habe ich jetzt jeweils 4 dieser Ordner (1xGMX/1xAndroid/1xIPAD/1xOutlook). Aufgrund der Übersichtlichkeit hätte ich gerne die gelöschten und gesendeten Elemente in jeweils nur einen Ordner.
Fertige Lösungen scheint es nicht zu geben, daher hatte ich die Idee dieses mit PHP zu realisieren, da gibt es ja alle möglichen IMAP Befehle. Ich bin nur kein Profi Programmierer, von daher wollte ich erstmal fragen, ob evtl. hier im Forum jemand sowas schon realisiert hat?

Also mit PHP: Verschiebe alle Elemente eines Ordners in einen anderen…

Danke und Gruß,
Andreas:rolleyes:

Das ist ein Problem der jeweiligen Mail-Software. Bei einigen Programmen kannst du den jeweiligen Pfad einstellen. Dadurch würdest du alles auf einen Ordner einstellen können.

Das ist ein Problem der jeweiligen Mail-Software. Bei einigen Programmen kannst du den jeweiligen Pfad einstellen. Dadurch würdest du alles auf einen Ordner einstellen können.

Ja, bei Outlook 2010 geht das. Beim IPAD und beim Android Handy sowie GMX Weboberfläche aber nicht.
Die einzigste sinnvolle Möglichkeit scheint diese über ein PHP Skript zu sein.:o

Dein Thema hat mich dazu bewogen mich mit dem Problem zu beschaeftigen.
Das mit den verschiedenen Ordner hat mich auch genervt.

Hier ein erstes Script um alle emails von einem ImapOrdner in einen anderen zu verschieben.
Hier vom Ordner "Deleted Messages in den Ordner „Archives“


	$imap_server 		   = "{xxxx.xxxxx.xxxx:143}";
	$imap_user 			 = "xxxxx";
	$imap_password 		 = "xxxxx";
	$imap_folder_source 	= "Deleted Messages";
	$imap_folder_target 	= "Archives";

	$mbox = imap_open($imap_server.$imap_folder_source,     $imap_user,$imap_password);

	for($x=1;$x<=imap_num_msg($mbox);$x++)
	   {
        $mailuid=imap_uid($mbox,$x);
        imap_mail_move($mbox,$mailuid,$imap_folder_target);
       }

Die PHP Extension ( php_imap.dll ) muss installiert sein.

Moin,

das nicht so ganz richtig. Beim IPad lassen sich natürlich die IMAP Ordner einstellen! Im Mail Account auf „Erweitert“ dort dere erste Punkt Postfach-Verhalten.
//Sven

Dein Thema hat mich dazu bewogen mich mit dem Problem zu beschaeftigen.
Das mit den verschiedenen Ordner hat mich auch genervt.

Super, hatte schon gedacht das ich da nicht der Einzigste sein kann der das Problem hat…:wink:

Ich hab dein Skript mal ausprobiert. Es läuft ohne Probleme durch, aber verschiebt bei mir keine emails. Die php_imap.dll vom 03.01.2012 liegt im ext Ordner. Ob es Probleme macht, daß beim GMX Imap server der Zugriff verschlüsselt über SSL läuft??

das nicht so ganz richtig. Beim IPad lassen sich natürlich die IMAP Ordner einstellen! Im Mail Account auf „Erweitert“ dort dere erste Punkt Postfach-Verhalten.

Danke für den Hinweis, werde ich mal ausprobieren…

Also die php_imap.dll 5.4.0RC3 mit 814.592 Bytes sollte die Aktuellste sein und steht auch in der php.ini drin. Laut logfile wird sie auch korrekt geladen, daran sollte es also nicht liegen.

Der Zugriff auf den IMAP Server läuft ja scheinbar auch korrekt, da keine Fehlermeldungen erscheinen.
Wenn ich testweise einen nicht existenten Ordnernamen eintrage erscheint dann ein Fehler. Also funktioniert auch der Ordnerzugriff. Nur das Verschieben geht dann nicht…:confused:

Ich habe folgendes mal mit echo ausgegeben:

echo imap_num_msg($mbox);
echo $mailuid=imap_uid($mbox,$x);

Als Ergebnis:
412413414415
4 ist die Anzahl der emails im Quellordner.
12 13 14 15 sind die Mail IDs.

Sollte doch erstmal alles korrekt sein??

Dann kann es doch nur noch am

imap_mail_move($mbox,$mailuid,$imap_folder_target);

Befehl liegen??

Ok, ich hab mir mal die PHP Befehlbeschreibung angesehen, mit dem Parameter CP_UID funktioniert es dann.

imap_mail_move($mbox,$mailuid,$imap_folder_target, CP_UID);

Nur leider löscht er die emails im Quellordner nicht wirklich, sondern markiert sie nur zum löschen. (durgestrichen)

Hab gerade festegestellt, daß

  imap_expunge($mbox);

die emails nur im Quellordner dann wirklich löscht. :slight_smile:

Also bei mir hat es ohne deine Aenderungen funktioniert deshalb hab ich nicht
weiter gesucht. Bin bei Strato.

Eben nochmal nachgelesen. Es geht auch so

imap_close($mbox,CL_EXPUNGE); 

Weiß jemand jetzt noch, wie man NUR Emails, die als gelöscht markiert sind, von einem Ordner in den nächsten verschiebt???

Ich kanns im Moment nicht testen aber schau dir mal die Funktion
imap_headerinfo an.
PHP: imap_headerinfo - Manual

Deleted - D wenn zum Löschen vorgemerkt, sonst ’ ’

Danke!
Habs tatsächlich hinbekommen:

  

    $imap_server            = "{xxxx.xxxxx.xxxx:143}"; 
    $imap_user              = "xxxxx"; 
    $imap_password          = "xxxxx"; 
    $imap_folder_source     = "Deleted Messages"; 
    $imap_folder_target     = "Archives"; 


 $mbox = imap_open($imap_server.$imap_folder_source, $imap_user,$imap_password);
    for($x=1;$x<=imap_num_msg($mbox);$x++)
       {
          $mailuid=imap_uid($mbox,$x);
           $msgno = imap_msgno ($mbox , $mailuid);
           $header = imap_headerinfo ( $mbox , $msgno);
           $del = $header->Deleted;

           if ($del == "D")
               {
             imap_mail_move($mbox,$mailuid,$imap_folder_target, CP_UID);
               }
       }
    imap_expunge($mbox);

Somit kann ich erstmal auch mit Outlook 2007 weiter arbeiten.
Erst ab Outlook 2010 lassen sich nämlich gelöschte emails bei IMAP auch automatisch in den Gelöscht Ordner verschieben!:o

Wer übrigens bei Android eine Möglichkeit sucht, Emails in IMAP Ordner automatisch einzusortieren ist mit „K-9 Mail“ gut bedient.

Als Hinweis noch:
Umlaute in den Ordnernamen funktionieren nicht. Dazu habe ich auch keine Lösung gefunden…

das nicht so ganz richtig. Beim IPad lassen sich natürlich die IMAP Ordner einstellen! Im Mail Account auf „Erweitert“ dort dere erste Punkt Postfach-Verhalten.
//Sven
Es hat funktioniert! Ich hatte es wohl übersehen, da es sehr versteckt in Untermenüs war…

Wenn jetzt noch beim PHP Skript Ordner mit Umlauten funktionieren würden…

@1007
Welche Clients hast du denn im Einsatz, bei denen man die Ordner nicht einstellen kann?

Wegen der Umlaute werde ich heute Abend nochmal schauen.
Es gibt da den Befehl „imap_utf7_decode“ .

Ich setze ab und zu Outlook2010 ein. Wo kann man den da den Ordner einstellen?
Wenn ich da was loesche landet es in „Geloeschte Elemente“ .

Ich setze ab und zu Outlook2010 ein. Wo kann man den da den Ordner einstellen?
Wenn ich da was loesche landet es in „Geloeschte Elemente“ .
Ich hab jetzt nur Outlook 2007, aber bei 2010 lags ziemlich sicher auch dort:
Extras/Kontoeinstellungen/IMAP Konto auswählen/Ändern/Weitere Einstellungen/Ordner