Zum Inhalt springen

Eingehende Mails mit Odoo KI automatisch verarbeiten

Hier erfährst du, wie du in Odoo einen allgemeinen Posteingang für eine E-Mail Adresse einrichtest, E-Mails dorthin routest und eingehende Nachrichten mit KI vollautomatisch verarbeitest. Funktioniert auch in Odoo Online, ohne externe KI-Integration, komplett im Odoo-Standard.
28. Dezember 2025 durch
Eingehende Mails mit Odoo KI automatisch verarbeiten
Nathanael Lee
| Noch keine Kommentare
Mit der nachfolgenden Odoo KI Mail-Integration kannst du dir die manuelle Überprüfung deiner allgemeinen Postfächer (z.B. info@, support@ etc.) komplett sparen.

Allgemeiner Posteingang

info@, support@, kontakt@
Alle Mails landen zuerst hier.

Odoo KI-Workflow
automatisch kategorisieren

Automatische Verarbeitung

Odoo erstellt je nach Kategorie automatisch Einträge:

CRM Lead (Sales) Helpdesk Ticket (Support) Projekt-Task (HR / Logistics / Other)
Hinweis: Mit der Anleitung werden eingehende Mails sofort durch KI kategorisiert und weiterverarbeitet. Sollte in diesem Prozess ein Fehler auftreten, wird die E-Mail von Odoo zurückgewiesen und der Absender erhält eine automatische Antwort, dass die Empfangs-Mailbox nicht verfügbar ist. Es ist deshalb sehr wichtig, dass du die Integration vor dem Go-Live ausführlich testest. Gerne kannst du mir auch eine Nachricht schreiben, und ich helfe dir beim Einrichten schnell und unkompliziert. 

Schritt 1: Erstelle ein neues Model, um alle eingehenden E-Mails zu speichern. Schalte den Debug-Modus ein und gehe zu Einstellungen / Technisch / Datenbankstruktur / Modelle. Erstelle ein neues Model. 

Modellbeschreibung: Incoming Emails
Modell: x_incoming_emails 
Hat E-Mail-Thread: Ja (wichtig!)
Zugriffsrechte: Verkauf/Administrator

Odoo Model Screenshot

Schritt 2: Erstelle unter Einstellungen / Technisch / Datenbankstruktur / Felder drei neue Felder im neuen Model, um die E-Mails zu kategorisieren. 

  • Feld 1:

    • Name: x_incoming_mail_category
    • Bezeichnung: Mail Kategorie
    • Modell: Incoming Emails
    • Feldtyp: Text
    • KI-Feld: Ja
    • KI-Befehl:

      Task: Categorize the following message.

      Constraint: Output exactly ONE category (ONE word) from the list below. Do not include punctuation, prefixes, or explanations.

      Categories & Rules:

      • Sales: Use ONLY if the customer expresses a clear intent to buy or purchase a product.
      • Support: Use for product questions, order status, technical issues, or general inquiries. (If they are asking about a product but haven't committed to buying, it is Support).
      • Logistics: Use ONLY for pallet transports, shipping coordination, pickups, or delivery logistics.
      • HR: Use for job applications, recruitment, or internal personnel matters.
      • Other: Use if the intent is unclear, the message is spam, or it does not fit the above.
    • Füge zum KI-Befehl mit "/" folgende Felder zum Kontext hinzu:

      • Messages -> Inhalte
      • Messages -> Betreff

    • Hinweis: Den Prompt kannst du selber auch anpassen oder optimieren, wenn du andere Anforderungen hast.

  • Feld 2:

    • Name: x_incoming_mail_sender_name
    • Bezeichnung: Sender Name
    • Modell: Incoming Emails
    • Feldtyp: Text
  • Feld 3:

    • Name: x_incoming_mail_sender_email
    • Bezeichnung: Sender Email
    • Modell: Incoming Emails
    • Feldtyp: Text


Schritt 3: Erstelle unter Einstellungen / Technisch / Benutzerschnittstelle / Ansichten die Ansicht (View), um die eingehenden Mails sichtbar zu machen. 

Ansichtsbezeichnung: Incoming Mails Form View

Ansichtstyp: Formular

Modell der Ansicht: Incoming Emails

Architektur:

<form string="Incoming Mail">
    <sheet>
        <group>
            <field name="x_incoming_mail_category" widget="ai_char"/>
            <field name="x_incoming_mail_sender_name" string="Absender Name"/>
            <field name="x_incoming_mail_sender_email" string="Absender E-Mail"/>
        </group>
    </sheet>
    <chatter/>
</form>

Odoo View Screenshot


Schritt 4: Erstelle unter Einstellungen / Technisch / Aktionen / Fensteraktionen eine neue Fensteraktion, um die Ansichten des neuen Models zu laden. 

Name der Aktion: Incoming Mails
Objekt: x_incoming_emails
Aktionsart: ir.actions.act_window

Odoo Windowaction Screenshot


Schritt 5: Erstelle unter Einstellungen / Technisch / Benutzerschnittstelle / Menüpunkte

einen neuen Menüpunkt, um die eingehenden Mails in der Discuss App aufrufen zu können.

Menü: Incoming Mails
Obermenü: Dialog
Aktion: ir.actions.act_window -> Incoming Mails

Odoo Menuitem Screenshot


Schritt 6: Erstelle unter Einstellungen / Technisch / E-Mail / Aliasse

einen neuen E-Mail Alias, um die eingehenden Mails an unser neues Model weiterzuleiten. Hinweis: Die folgende Konfiguration funktioniert nur, wenn du den Odoo-internen Mailserver verwendest. Wenn du deine Mails ab einem externen Mailserver sendest, musst du anstelle vom Alias einen neuen eingehenden Mailserver anlegen. Wenn du dazu Hilfe brauchst, kannst du mich gerne kontaktieren. 

Odoo Mail Alias Screenshot

Wenn du nun eine E-Mail an die angegebene Mailadresse sendest (in diesem Fall support@erp-partner.odoo.com), wird Odoo automatisch einen neuen Datensatz im Model Incoming Emails anlegen. Diesen Datensatz können wir dann direkt nach der Erstellung mit der KI analysieren und anschliessend weiterverarbeiten. Dafür musst du zwei Automatisierungsregeln anlegen. 

Schritt 7: Automatisierungsregel zur Berechnung des KI-Felds anlegen. Das ist notwendig, da die Odoo KI Felder sonst nur per Knopfdruck oder jede Nacht aktualisiert werden, wir aber eine sofortige Bearbeitung der E-Mail möchten. 

Erstelle unter Einstellungen / Technisch / Automatisierung / Automatisierungsregeln

eine neue Automatisierungsregel.

Name: Compute AI Fields in Incoming Mails
Modell: Nachricht (mail.message)
Auslöser: Bei Erstellung
Anwenden auf: [("model", "=", "x_incoming_emails"), ("message_type", "=", "email")]

Folgeaktionen: Code ausführen:

for message in records:
    record = env[message.model].browse(message.res_id)
    if not record or not record.exists():
        continue

    raw_from = message.email_from or ""
    sender_name = ""
    sender_email = ""

    if "<" in raw_from and ">" in raw_from:
        sender_name = raw_from.split("<")[0].replace('"', "").strip()
        sender_email = raw_from.split("<")[1].split(">")[0].strip()
    else:
        sender_email = raw_from.strip()
        sender_name = message.record_name or "Unknown"

    vals = {
        "x_incoming_mail_sender_email": sender_email,
        "x_incoming_mail_sender_name": sender_name,
    }

    result = record.get_ai_field_value("x_incoming_mail_category", {})
    category_value = result.get("value") if isinstance(result, dict) else result

    if category_value:
        vals["x_incoming_mail_category"] = category_value

    record.write(vals)

Odoo Automation Rule Screenshot 


Schritt 8:
Automatisierungsregel zur Weiterverarbeitung der eingehenden E-Mails anlegen. In diesem Beispiel wird folgendes erstellt: 

Werden die E-Mails als "Support" kategorisiert -> Die Regel erstellt ein Helpdesk Ticket (Wichtig: Helpdesk Modul muss installiert sein).

"Sales" -> Die Regel erstellt eine CRM Opportunity (Wichtig: CRM Modul muss installiert sein).

"Logistik, HR oder Other" -> Die Regel erstellt einen Task im entsprechenden Projekt (Wichtig: Projekt Modul muss installiert sein und die Projekte mit den korrekten Namen müssen angelegt sein (General Inbox, HR Team Inbox, Logistic Team Inbox).

Hinweis: Die E-Mail-Verarbeitung mit dieser Automatisierungsregel ist nur ein grundlegendes Beispiel. Welche Mailkategorien existieren und was genau bei welcher Kategorie in Odoo passiert, muss auf jedes Unternehmen spezifisch angepasst werden.

Name: Create Records from incoming Email
Modell: Incoming Emails
Auslöser: Bei Erstellung und Bearbeitung
Bei der Aktualisierung: Mail Kategorie
Folgeaktionen: Code ausführen:

for record in records:
emails = record.message_ids.filtered(lambda m: m.message_type == "email").sorted("id")
if not emails:
continue
msg = emails[0]
cat = record.x_incoming_mail_category
rec_name = msg.subject or record.x_incoming_mail_sender_name or "New Incoming Request"
new_rec = None

if cat == "Sales":
new_rec = env["crm.lead"].create({
"name": rec_name,
"partner_name": record.x_incoming_mail_sender_name,
"email_from": record.x_incoming_mail_sender_email,
"type": "opportunity",
})

elif cat == "Support":
partner = env["res.partner"].search([("email", "=", record.x_incoming_mail_sender_email)], limit=1)
if not partner and record.x_incoming_mail_sender_email:
partner = env["res.partner"].create({
"name": record.x_incoming_mail_sender_name or record.x_incoming_mail_sender_email,
"email": record.x_incoming_mail_sender_email,
})
new_rec = env["helpdesk.ticket"].create({
"name": rec_name,
"partner_id": partner.id if partner else False,
})

else:
proj_map = {
"HR": "HR Team Inbox",
"Logistics": "Logistic Team Inbox",
}
proj_name = proj_map.get(cat, "General Inbox")
project = env["project.project"].search([("name", "=", proj_name)], limit=1)
if project:
new_rec = env["project.task"].create({
"name": rec_name,
"project_id": project.id,
})

if new_rec:
msg.sudo().copy({
"model": new_rec._name,
"res_id": new_rec.id,
})

Odoo Automation Rule Screenshot 2


Fertig! Nun werden alle deine eingehenden E-Mails, die im Alias konfiguriert sind, automatisch weiterverarbeitet. 

Wenn du Fragen hast, kontaktiere mich gerne oder schreibe einen Kommentar. 

Nate


Danke für die Registrierung!



Anmelden , um einen Kommentar zu hinterlassen