Linux: Automatisiert Posteingang checken und Skript ausführen
Moin zusammen,
könnt ihr mir einen Tooltipp geben?
Ich suche ein Tool für meinen Raspberry PI.
Grob skizziert: Er soll per Cron-Job alle 5 min per IMAP ein Postfach überwachen und ggf. - basierend auf den Mails - Skripts anwenden.
Bsp: Wenn eine Mail mit dem Betreff "x" da ist, erstelle eine Datei in der "X" steht.
Danke für eure Tipps.
Grüße Jensen
könnt ihr mir einen Tooltipp geben?
Ich suche ein Tool für meinen Raspberry PI.
Grob skizziert: Er soll per Cron-Job alle 5 min per IMAP ein Postfach überwachen und ggf. - basierend auf den Mails - Skripts anwenden.
Bsp: Wenn eine Mail mit dem Betreff "x" da ist, erstelle eine Datei in der "X" steht.
Danke für eure Tipps.
Grüße Jensen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 273941
Url: https://administrator.de/contentid/273941
Ausgedruckt am: 21.11.2024 um 14:11 Uhr
14 Kommentare
Neuester Kommentar
z.B. mit einem Python Script
https://yuji.wordpress.com/2011/06/22/python-imaplib-imap-example-with-g ...
Gruß jodel32
https://yuji.wordpress.com/2011/06/22/python-imaplib-imap-example-with-g ...
Gruß jodel32
Hallo zusammen,
um @114757 's Vorschlag mal etwas Gestallt zu verleihen, hier ein Beispiel mit Python:
Es checkt den Posteingang eines Accounts auf ungelesene Mails mit einem bestimmten Betreff, erstellt dann eine Datei mit beliebigem Inhalt und löscht diese Mail dann anschließend.
Grüße Uwe
um @114757 's Vorschlag mal etwas Gestallt zu verleihen, hier ein Beispiel mit Python:
Es checkt den Posteingang eines Accounts auf ungelesene Mails mit einem bestimmten Betreff, erstellt dann eine Datei mit beliebigem Inhalt und löscht diese Mail dann anschließend.
#!/usr/bin/python
import imaplib
import email
# ----------------------------
SERVER = "imap.domain.de"
USERNAME = "MaxMuster"
PASSWORD = "Geheim"
# -----------------------------
conn = imaplib.IMAP4_SSL(SERVER)
conn.login(USERNAME,PASSWORD)
# Inbox selektieren
typ, data = conn.select('INBOX')
# Nur ungelesene Mails mit einem bestimmten Betreff filtern und in einer Liste speichern
typ, [msg_ids] = conn.uid('search',None,'(UNSEEN SUBJECT "testmail")')
if msg_ids:
for id in msg_ids.split():
#print id
typ,mail = conn.uid('fetch',id,'(RFC822)')
msg = email.message_from_string(mail[1])
subject = msg['subject']
# neue Datei erstellen
file = open('datei.txt','w')
file.write("Testinhalt")
file.close()
# Mail loeschen
print "Loesche Mail mit ID '" + id + "' und Betreff: '" + subject + "'"
conn.uid('store',id,'+FLAGS','(\\Deleted)')
conn.expunge()
else:
print "Keine neuen Nachrichten im Posteingang"
conn.close()
conn.logout()
Platzhalter braucht es bei IMAP Searches nicht, denn laut RFC Doku sind das keine exakten Matches sondern es wird immer nur nach vorkommen des Strings im Subject Caseinsensitive gesucht. Geht also Out of the Box ohne Wildcards.
Gruß jodel32
In all search keys that use strings, a message matches the key if the string is a substring of the field. The matching is case-insensitive.
Gruß jodel32
Einfach mal die Suche anwerfen
https://stackoverflow.com/questions/6225763/downloading-multiple-attachm ...
https://stackoverflow.com/questions/6225763/downloading-multiple-attachm ...
Zitat von @novregen:
ok, und dann das script auf dem pi per cron ausführen oder muss dort noch mehr installiert werden ?
Python natürlich.ok, und dann das script auf dem pi per cron ausführen oder muss dort noch mehr installiert werden ?
https://www.raspberrypi.org/forums/viewtopic.php?t=181480
Google schon wieder kaputt?
https://www.synology.com/de-de/dsm/packages/py3k
Synology ist auch nur ein Linux-Unterbau, also ja.
https://www.synology.com/de-de/dsm/packages/py3k
Synology ist auch nur ein Linux-Unterbau, also ja.
Zitat von @novregen:
Hallo Uwe,
kannst du mir nochmal helfen und es so ändern das es prüft ob mail von absender x oder y oder z, anhang abspeichert auf nas und dann die Email löscht ?
Das ganze dann auf dem pi als cron laufen lassen ß
Hallo Uwe,
kannst du mir nochmal helfen und es so ändern das es prüft ob mail von absender x oder y oder z, anhang abspeichert auf nas und dann die Email löscht ?
Das ganze dann auf dem pi als cron laufen lassen ß
Servus @novregen .
Ausnahmsweise hier mal eine Anpassung außer der Reihe, da das ja nicht Thema dieses Threads ist (s. Foren-Richtlinien).
Für das nächste mal bitte einen neuen Thread erstellen! Merci.
Back to topic:
Im jetzigen Zustand verarbeitet das Skript alle ungelesenen Mails. Wenn man auf ungelesene Mails von "bestimmten" Absendern ausfiltern möchte, dann ändere man in dieser Zeile
(ret, messages) = conn.search(None,'UNSEEN')
UNSEEN FROM user@domain.tld
Weitere Hinweise, z.B. zum Attachment-Handling für den Fall das bereits Attachments mit dem selben Namen im Ausgabeordner existieren siehe Kommentare im Code.
Das Skript kann hier heruntergeladen werden:
save_attachments_273941.py
Viel Spaß
Grüße Uwe
Support gerne gegen Aufwandsentschädigung per PN