E-Mail Parser Service per IMAP
Suchender80
- tools
Hallo zusammen,
ich lese hier schon seit einiger Zeit mit, habe aber noch nie einen Post verfasst. Jetzt habe ich aber kurz eine Frage und erlaube mir die hier zu stellen.
Ich war letzthin auf der Suche nach einem Tool/Service das ein IMAP-Postfach regelmässig nach Mustern (zum Bsp. Betreff) durchsucht und aus dem Mail (es stammt von einem Webformular) die relevanten Information extrahiert und in eine Tabelle (CSV-download würde schon reichen) transferiert. Alle gefunden Tools waren kommerziell, was bei diesem Projekt nicht möglich war.
Hattet ihr auch schon mal dieses Problem? Wie habt ihr es gelöst?
Ich freue mich auf Eure Antworten!
Hallo,
ich hatte mal eine Anmeldeseite, also ein HTML-Formular, das per PHP ausgewertet wurde und bei jeder Anmeldung eine E-Mail an mich geschickt hat. Da in diesem Formular alle Informationen schon aufgeschlüsselt vorlagen, hat das PHP-Script bei jeder Anmeldung auch noch die Daten in eine CSV-Datei geschrieben.
Gruß
Jürgen
Lieber Suchender80,
verstehe ich das richtig, dass Du eine CSV-Datei in regelmäßigen Abständen mit inhalten aus E-Mails aktualisieren möchtest, damit Du sie zu einem beliebigen Zeitpunkt herunterladen kannst?
aus dem Mail (es stammt von einem Webformular)
Warum wird nicht direkt bei der Verarbeitung des Webformulars die CSV-Datei aktualisiert?
was bei diesem Projekt nicht möglich war.
Wenn man jetzt wüsste, auf welcher Basis dieses Projekt aufgebaut ist... Welche serverseitige Sprache kommt zum Einsatz? Verwendet ihr eine Datenbank?
Hattet ihr auch schon mal dieses Problem? Wie habt ihr es gelöst?
In unserem Projekt wird alle fünf Minuten ein PHP-Script gestartet, dass sich in einem IMAP-Postfach anmeldet, um dort eingegangene Mails zu verarbeiten. Sie werden danach entweder gelöscht, oder in ein Archiv verschoben. Die ins Archiv verschobenen Mails haben Empfängeradressen, die zu einer Rundmail-Gruppe gehören, an deren Mitglieder diese Mails versendet werden. Den Betreff werten wir nicht speziell aus, auch nicht Dateianhänge, wohl aber die Absenderadresse, da wir die eventuell ersetzen müssen (wegen fremder Maildomains).
Liebe Grüße
Felix Riesterer
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.)
#!/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 )
Oh. Da ist mir bei der „Optimierung“ für das Forum etwas aus der falschen Version (mit anderem CSV-Generator) hineingeraten, die folgende Zeile ist falsch:
with open( outFile, 'w', newline='\r\n', header = None ) as csvfile:
Das „, header = None“ ist nicht etwa nur „hyperliquid“, dessen Gebrauch endet mit Beschwerden des Skriptinterpreters.
Die betreffende Zeile im Testskript also wie folgt ändern:
with open( outFile, 'w', newline='\r\n') as csvfile: