Re: Attachments aus Mails in Maildir Verzeichnis per Script löschen
Hallo,
Ralph Brugger wrote:
> Hallo Jochen,
>
> >> 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.
>
> Mit Python kann ich leider nicht dienen. Mal schaue was es für PHP da
> für Module gibt.
Iieh - PHP :-)
AFAIK kann man mit IMAP keine Nachrichten bearbeiten, sondern muss sie
herunterladen, vom Server löschen, die Nachricht bearbeiten und wieder
hochladen. Ich habe dazu mal ein Python-Grundgerüst gebastelt, ich hänge
das mal an diese Mail dran (<1kB, sollte also i.O. sein).
hth, Wolf
--
Büroschimpfwort des Tages: Diplomperforator - Kollege, der nix kann, außer den
Locher zu bedienen. (Sven-Lukas Müller)
#!/usr/bin/python
import sys
from imaplib import *
passw = "geheim"
user = "username"
srv = "imapserver"
server = IMAP4(srv)
code, msg = server.login(user, passw)
if not code=="OK":
print "Login failed: %s"%msg[0]
sys.exit(1)
ret, num_msg = server.select("INBOX")
if not ret=="OK":
print "Source mailbox not found"
sys.exit(2)
num_msg = int(num_msg[0])
msg_idx=1
for msg_idx in range(1, num_msg+1):
ret, tmp = server.fetch(str(msg_idx), '(RFC822)')
if tmp[0] is None:
# retrieval of msg failed - this should be looked at
# more closely, actually
continue
else:
# retrieve the content of the mail (all headers and body)
msg=tmp[0][1]
# at this point, the mail could be altered, piped through
# an external command, etc.
# to copy msg to another mailbox
# server.append("INBOX.SPAM", None, None, msg)
# to mark msg as deleted:
# server.store(str(msg_idx), '+FLAGS', '\\Deleted')
# remove mails marked as deleted
# server.expunge
Reply to: