Re: Attachments aus Mails i n Maildir Verzeichnis per Script löschen

2006-09-17 Diskussionsfäden Jochen Schulz
Ralph Brugger:
> > Ralph Brugger:
> 
> > Python kennt seit einiger Zeit echte boolsche Typen (True, False), die
> > sollte man benutzen, wenn man wirklich nur die zwei Werte braucht.
> 
> Ich muss mir mal ein Pythonbuch zulegen.
> Muss man für Boolean als Datentypen irgendwas einbinden?

Ne, ist built-in. Buchtip: . Ein paar neuere
Features (Decorators, Descriptors) fehlen, aber die braucht man auch
nicht zwingend.

J.
-- 
If politics is the blind leading the blind, entertainment is the fucked-
up leading the hypnotised.
[Agree]   [Disagree]
 


signature.asc
Description: Digital signature


Re: Attachments aus Mails i n Maildir Verzeichnis per Script löschen

2006-09-12 Diskussionsfäden Jochen Schulz
Ralph Brugger:
> 
> removeattachments.py

Insgesamt hübsch geworden! Kurze Codekritik:

> # Sub: Treewalker

Hast Du mal VBA programmiert? ;-)

> # Gibt es zu loeschende Parts ?
> if part.get_content_type() != "text/plain" and
> part.get_content_type() != "multipart/mixed" and part.get_content_type()
> != "multipart/signed":

Solche langen Bedingungen kann man auch gern mal als eigene Funktion
definieren. Da Du das zwei Mal brauchst, ist das hier IMHO auch
gerechtfertigt.

>   doremove = 1

Python kennt seit einiger Zeit echte boolsche Typen (True, False), die
sollte man benutzen, wenn man wirklich nur die zwei Werte braucht.

> echoheader = ""
> echoheader += "Datei: "
> echoheader += filex
> echoheader += "\n"
> echoheader += "  Groesse: %d kB" % sizekb
> echoheader += " > %d kB\n" % minsize
> echoheader += "  Alter: %d" % daysold
> echoheader += " > %d Tage\n" % minalter

So eine Stringverkettung ist oft böse, weil (wie in Java) jedes Mal ein
neues String-Objekt erzeugt wird. Mit Multilinestrings und
Stringformatierung sieht das IMHO auch etwas schöner aus (und geht
schneller, wenn man das sehr, sehr oft macht):

echoheader = \
"""Datei: %(filex)
  Groesse: %(sizekb) > %(minsize)
  Alter: %(daysold) > %(minalter)
""" % locals()

locals() gibt ein Dictionary mit den lokal definierten Variablen zurück.

> if len(sys.argv) != 5:

Wenn man eine etwas komplexere Aufrufsyntax hat, lohnt schnell ein Blick
auf das Modul optparse:


Ist etwas aufwändig zu benutzen, aber dann funktioniert auch alles sehr
schön und man bekommt ein paar Sachen quasi umsonst (vor Allem eine
brauchbar formatierte "usage").

J.
-- 
I like my Toyota RAV4 because of the commanding view of the traffic
jams.
[Agree]   [Disagree]
 


signature.asc
Description: Digital signature


Re: Attachments aus Mails i n Maildir Verzeichnis per Script löschen

2006-09-02 Diskussionsfäden Jochen Schulz
Ralph Brugger:
> Hallo Jochen,
> 
> > Ich kenne da nix Fertiges, aber mit Python und den Modulen email und
> > mailbox sollte das relativ schnell zu bewerkstelligen sein. Eventuell
> > lohnt auch ein Blick in (das Debianpaket) archivemail.
> 
> Mit Python kann ich leider nicht dienen. Mal schaue was es für PHP da
> für Module gibt.

Das ist doch *die* Gelegenheit, mal anzufangen. ;-)

Ein recht anschauliches Beispiel aus der Python-Doku:
http://docs.python.org/lib/email-unpack.txt

Die Schleife in der main-Methode (for part in msg.walk()) ist für Dich
interessant. Diese dann einfach einpacken in sowas wie:

import email
import mailbox
import mimetypes

inbox = mailbox.Maildir('/home/ralph/Maildir', email.message_from_file)
for msg in inbox:
for part in msg.walk():
...

Die benutzten Module:
http://docs.python.org/lib/module-email.Message.html
http://docs.python.org/lib/module-mailbox.html

Falls Du tatsächlich Python lernen willst und schon mal programmiert
hast, empfehle ich .

J.
-- 
I wish I looked more like a successful person even though I'm a loser.
[Agree]   [Disagree]
 


signature.asc
Description: Digital signature


Re: Attachments aus Mails i n Maildir Verzeichnis per Script löschen

2006-09-02 Diskussionsfäden Jochen Schulz
Ralph Brugger:
> 
> Jetzt würde ich gerne per Script alle Attachments aus den einzelnen
> Mails löschen oder abtrennen, wenn die Mails älter als ein definerbares
> Datum sind. zB älter als 12 Monate.

Ich kenne da nix Fertiges, aber mit Python und den Modulen email und
mailbox sollte das relativ schnell zu bewerkstelligen sein. Eventuell
lohnt auch ein Blick in (das Debianpaket) archivemail.

J.
-- 
In the west we kill people like chickens.
[Agree]   [Disagree]
 


signature.asc
Description: Digital signature