HelpStackDocs

Integrationen

E-Mail-Kanal

Verbinden Sie ein Postfach als HelpStack-Kanal: eingehende E-Mails werden per IMAP abgerufen, und Antworten werden per SMTP gesendet.

Kurzüberblick#

KanaltypEMAIL
EingehendIMAP-Polling-Worker (npm run email:poll)
AusgehendSMTP über nodemailer (Kanal-Anmeldedaten)
AnmeldedatenVerschlüsselt gespeichert (AES-256-GCM) pro Kanal
TransportsicherheitIMAP über TLS
Polling-Intervall~10s (Entwicklung) / ~60s (Produktion)

Eingehend: IMAP-Polling#

Ein Hintergrund-Poller verbindet sich mit dem IMAP-Server jedes aktiven EMAIL-Kanals (TLS) und führt in jedem Zyklus folgende Schritte aus:

  1. Ruft aktuelle, unverarbeitete E-Mails ab.
  2. Parst Text, HTML und Anhänge.
  3. Dedupliziert nach message-id + Vorschau (damit dieselbe E-Mail nicht zweimal erfasst wird).
  4. Erstellt ein Gespräch, das durch die E-Mail-Adresse des Absenders identifiziert wird.
  5. Lädt Anhänge in den Speicher hoch.
  6. Markiert die E-Mail als verarbeitet.

Wie „verarbeitet" nachverfolgt wird

Der Poller bevorzugt ein benutzerdefiniertes IMAP-Schlüsselwort $HelpStackProcessed, das das \Seen-Flag unangetastet lässt (sodass die Nachricht in anderen Clients weiterhin als ungelesen erscheint). Wenn der Server keine benutzerdefinierten Schlüsselwörter unterstützt, fällt er auf das \Seen-Flag zurück.

Empfehlung: Verwenden Sie ein dediziertes Postfach für den Kanal. Wenn der Server keine benutzerdefinierten Schlüsselwörter unterstützt, verlässt sich HelpStack auf \Seen, um eine erneute Erfassung zu verhindern — wenn das Postfach mit einem menschlichen Leser geteilt wird (der Dinge als gelesen/ungelesen markiert), kann es zu verpassten oder duplizierten Erfassungen kommen.

Threading

Threading-Informationen werden in den Gesprächsmetadaten gespeichert, sodass Antworten korrekt im selben Thread erscheinen:

MetadatenfeldQuelle
emailSubjectBetreff der eingehenden E-Mail
emailMessageIdMessage-ID-Header
emailReferencesReferences-/In-Reply-To-Kette

Den Poller ausführen

npm run email:poll

Führen Sie diesen Worker zusammen mit der App (und dem Nachrichtenwarteschlangen-Worker) aus, damit eingehende E-Mails erfasst werden. In der Produktion wird etwa alle 60s gepollt; in der Entwicklung etwa alle 10s.

Umgebungsvariablen#

VariableStandardZweck
EMAIL_MAX_BODY_BYTES~100 KBMaximale erfasste Body-Größe; längere Inhalte werden abgeschnitten
EMAIL_MIN_ATTACHMENT_BYTES~1 KBAnhänge kleiner als dieser Wert werden übersprungen (filtert Tracking-Pixel)
EMAIL_MAX_AGE_DAYS5E-Mails, die älter als diese Anzahl von Tagen sind, werden ignoriert
IMAP_ALLOW_SELF_SIGNEDNur Entwicklung — selbstsignierte IMAP-TLS-Zertifikate akzeptieren

Verschlüsselung#

Die IMAP/SMTP-Anmeldedaten jedes Kanals werden mit AES-256-GCM verschlüsselt gespeichert. Das Dashboard bietet eine Test-Schaltfläche, die die konfigurierten Anmeldedaten validiert (verbindet sich und authentifiziert sich), bevor Sie sie speichern/verwenden.

Verifizierte Anmeldedatenfelder für einen E-Mail-Kanal (credentials):

host, port, username, password, from,
secure?, imapHost?, imapPort?, imapSecure?, imapAllowSelfSigned?

Ausgehend: SMTP über nodemailer#

Antworten werden per SMTP über nodemailer mit den eigenen SMTP-Anmeldedaten des Kanals gesendet: host, port, secure, user, pass und from. Das Senden von ausgehenden Nachrichten wird durch die Sender der Nachrichtenwarteschlange übernommen.

Kanal-SMTP vs. System-Benachrichtigungs-SMTP

Dies sind zwei separate E-Mail-Pfade — verwechseln Sie sie nicht:

Kanal-SMTPSystem-Benachrichtigungs-SMTP
ZweckKundenantworten auf einem EMAIL-KanalPlattform-/System-Benachrichtigungs-E-Mails
AnmeldedatenPro Kanal, verschlüsseltUmgebungsvariablen
Konfiguriert überKanaleinstellungenSMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_SECURE, SMTP_FROM
Standard-AbsenderDas from-Feld des Kanalsnoreply@helpstack.eu

System-Benachrichtigungs-E-Mails (z. B. Konto-/Systemmeldungen) verwenden immer den per Umgebungsvariable konfigurierten SMTP und den Standardabsender noreply@helpstack.eu, unabhängig von einem Kanal.

Verwandte Themen#