MailPlus Expunge bei MailPlus/Server?

ChristophK

Benutzer
Mitglied seit
12. Jan 2021
Beiträge
152
Punkte für Reaktionen
10
Punkte
18
Hallo, ich weiß direkt es gibt keine direkte Option in den Paketen MailPlus/MailPlus Server um nach bestimmten Kriterien Mails automagisch zu löschen, aber AFAIK ist ein Dovecot als MDA drinnen.
Gibt es irgendwelche Möglichkeiten Expunge Funktionalität da trotzdem rein zu kriegen? Am besten so, dass die auch Updates etc. "überlebt". Ich weiß, dass Dovecot sowas kann...
 

ChristophK

Benutzer
Mitglied seit
12. Jan 2021
Beiträge
152
Punkte für Reaktionen
10
Punkte
18
kannst du zeigen wie dein Script aussieht? Vielleicht kann ich mir da was abgucken :)
 
Zuletzt bearbeitet von einem Moderator:

headcrash99

Benutzer
Mitglied seit
18. Dez 2024
Beiträge
2
Punkte für Reaktionen
2
Punkte
3
Ungefähr so.
Zeilen 9-11 anpassen und in Zeile 66 definieren welche Mails wohin verschoben werden sollen.


import imaplib
import email
from email.header import decode_header
import re # For pattern matching, if needed
import time
import datetime

# Define connection parameters
IMAP_SERVER = "IP ADDRESS"
EMAIL_ACCOUNT = "SERVER\USER"
PASSWORD = "PASSWORD"

def connect_to_imap():
# Connect to the IMAP server and log in
try:
mail = imaplib.IMAP4_SSL(IMAP_SERVER)
mail.login(EMAIL_ACCOUNT, PASSWORD)
print("Connected to IMAP server.")
return mail
except imaplib.IMAP4.error as e:
print("IMAP login failed:", e)
return None

def search_emails(mail, criteria):
# Search for emails based on the specified criteria
try:
mail.select("inbox") # Connect to inbox
status, message_ids = mail.search(None, criteria)

if status != "OK":
print("No messages found!")
return []
return message_ids[0].split() # List of message IDs
except imaplib.IMAP4.error as e:
print("Error searching emails:", e)
return []

def move_email(mail, msg_id, destination_folder):
# Move an email to the destination folder
try:
result = mail.copy(msg_id, destination_folder)
if result[0] == 'OK':
mail.store(msg_id, '+FLAGS', '\\Deleted')
mail.expunge() # Remove marked emails
print(f"Email ID {msg_id.decode()} moved to {destination_folder}.")
else:
print(f"Failed to move email ID {msg_id.decode()}.")
except imaplib.IMAP4.error as e:
print("Error moving email:", e)

def find_and_move(mail, criteria, target_folder):
message_ids2 = search_emails(mail, criteria)

print(f"Moving {criteria} matching email(s).")
print(f"Found {len(message_ids2)} matching email(s).")

for msg_id in message_ids2:
move_email(mail, msg_id, target_folder)

def main():
# Connect to the server
mail = connect_to_imap()
if mail is None:
return

find_and_move(mail, '(FROM "sender@something.com") (SUBJECT "Something")', "INBOX.SubFolder1.SubFolder2" )

mail.expunge()
mail.close()
mail.logout()
print("Disconnected from IMAP server.")

if __name__ == "__main__":
main()
 
  • Like
Reaktionen: ChristophK


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat