[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: