Kleines Python-Skript zum Testen...
bearbeitet von Raketenwilli> Wenn man jetzt wüsste, auf welcher Basis dieses Projekt aufgebaut ist... Welche serverseitige Sprache kommt zum Einsatz? Verwendet ihr eine Datenbank?
Hm. Ich glaube der TO sucht etwas Fertiges.
Ich habe mal die Python-Imap-Tools getestet:
(Installation unter Debian und Derivaten:)
~~~
sudo apt install python3-imap-tools
~~~
Test-Skript: (**Ausdrücklich: Nicht produktiv verwenden! Warnungen folgen.**)
- Geht zwar, erzeugt aber, wenn viele Mails auf dem Server liegen, **heftigen** Datenverkehr (weil alle Mails abgerufen - und übrigens sonst nicht geändert werden) und braucht bei vielen Mails dementsprechend auch lange.
- Zudem muss das Passwort für das Mailkonto im Programm angegeben werden. Das gilt „per se“ als **gefährlich**.
- Es wird nicht mit gut gesicherten Mailservern (z.B. google-Mail) funktionieren (OAuth[2] müsste dazu eingebaut werden, dass ist es aber bei Weitem nicht mehr so trivial.)
- ist nur „gegen“ einen Server mit TLS (Port 993) getestet.
~~~PYTHON3
#!/usr/bin/python
#############################################
# Only for testing! #
# NEVER use this in productiv environments! #
#############################################
### Config:
outFile = '/tmp/mails.csv'
mailServer = 'Dein-Imap-Server'
mailFolder = 'INBOX'
loginName = 'Dein-Login-Name'
loginPass = 'Dein-Passwort'
csvDialect = 'unix'
### Program:
import csv
from imap_tools import MailBox, AND
with MailBox( mailServer ).login( loginName, loginPass, initial_folder=mailFolder ) as mailbox:
dates = [ msg.date_str for msg in mailbox.fetch( AND( all=True ) ) ]
senders = [ msg.from_ for msg in mailbox.fetch( AND( all=True ) ) ]
recipients = [ msg.to for msg in mailbox.fetch( AND( all=True ) ) ]
subjects = [ msg.subject for msg in mailbox.fetch( AND( all=True ) ) ]
mails = []
for i in range( len( dates ) ):
mails.append( [ dates[i], senders[i], recipients[i], subjects[i] ])
with open( outFile, 'w', newline='\r\n', header = None ) as csvfile:
writer = csv.writer( csvfile, dialect=csvDialect )
for mail in mails:
writer.writerow( mail )
~~~