Emails in ordner verschieben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
coder007
User
Beiträge: 10
Registriert: Mittwoch 19. Oktober 2022, 18:14

Hallo,
ich würde gerne einen Spamfilter mit Ki bauen und das habe ich auch geschafft aber ich weiß nicht wie ich E-Mails in den Spam Ordner verschieben kann.
Hier ist mein code:

Code: Alles auswählen

import os
from imapclient import IMAPClient
from mltext import classifyText, storeText
from mlmodel import trainModel, checkModel
import requests



API_KEY = "GEHEIM"
imap_server = "GEHEIM"
username = "GEHEIM"
password = "GEHEIM"

# Verbindung zum Server herstellen
with IMAPClient(imap_server) as client:
    client.login(username, password)

    # IMAP-Ordner auswählen (z.B. INBOX)
    client.select_folder('INBOX')

    # Die letzten 10 E-Mails suchen
    messages = client.search('ALL')
    latest_messages = messages[-10:]

    # Die neuesten 10 E-Mails abrufen und den Betreff ausgeben
    for msg_id, data in client.fetch(latest_messages, ['ENVELOPE']).items():
        envelope = data[b'ENVELOPE']
        subject = envelope.subject.decode()
        print(subject)
        demo = classifyText(API_KEY, subject)
        label = demo["class_name"]
        confidence = demo["confidence"]
        print("is '%s' with %d%% confidence" % (label, confidence))
        if label.lower() == "spam":
           client.move(msg_id,'+FLAGS','\\Spam')
Viele Grüße

Coder007
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Woher kommt denn der Code? ChatGPT?
coder007
User
Beiträge: 10
Registriert: Mittwoch 19. Oktober 2022, 18:14

Teilweise ich habe mir von multiplen Websites code Schnipsel zusammen gesucht und 1 mal chat gpt gefragt
Viele Grüße

Coder007
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

So kann man halt nicht programmieren. Du musst schon die Dokumentation der verwandten Module lesen. Da steht drin, wie der move Aufruf auszusehen hat. https://imapclient.readthedocs.io/en/3. ... lient.move

Und da sehe ich schon klare Abweichungen zu deinem Code. Das muss angepasst werden.
Benutzeravatar
__blackjack__
User
Beiträge: 13123
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@coder007: Anmerkungen zum Quelltext:

`os`, `requests`, `checkModel`, `trainModel`, und `storeText` werden importiert, aber nirgends verwendet.

Konstanten werden per Konvention KOMPLETT_GROSS geschrieben, wie das bei `API_KEY` ja bereits gemacht wird.

`demo` ist ein komischer Name für eine Klassifikation.

Der ``%``-Operator zur Zeichenkettenformatierung wurde schon in Python 2 von der `format()`-Methode auf Zeichenketten abgelöst. Bei aktuellem Python 3 würde man dafür ein f-Zeichenkettenliteral verwenden.

Es wäre effizienter nicht jede Nachricht einzeln in den Spam-Ordner zu verschieben.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
coder007
User
Beiträge: 10
Registriert: Mittwoch 19. Oktober 2022, 18:14

`os`, `checkModel`, `trainModel`, und `storeText` werden in den variablen verwendet. Bei `requests` hast du recht das ist unnötig.
Viele Grüße

Coder007
coder007
User
Beiträge: 10
Registriert: Mittwoch 19. Oktober 2022, 18:14

__deets__ hat geschrieben: Dienstag 9. April 2024, 19:32 So kann man halt nicht programmieren. Du musst schon die Dokumentation der verwandten Module lesen. Da steht drin, wie der move Aufruf auszusehen hat. https://imapclient.readthedocs.io/en/3. ... lient.move

Und da sehe ich schon klare Abweichungen zu deinem Code. Das muss angepasst werden.
Danke aber daraus wurde ich nicht richtig schlau. Woher bekomme ich den uid der mail? und wie wähle ich den richtigen ordnerpfad? Und ich möchte die email nicht nur kopieren sondern auch die alte löschen
Viele Grüße

Coder007
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hast du den Rest deines Codes gesehen? Und verstanden? Und welche der darin vorkommenden Variablen konnte eine ID einer Nachricht beinhalten? Und die Operation "move" ist nicht die Operation "copy".

Fuer den Ordnerpfad wuerde ich einfach einen Namen angeben. Oder versuchen mit dem imapclient rumzuspielen, um die bestehenden Ordner aufzulisten, und so an die Namen zu kommen.
Antworten