Zum Inhalt

E-Mail senden (über SMTP)

Der Service Task „E-Mail senden (über SMTP)“ versendet eine E-Mail über einen beliebigen SMTP-Server, etwa den Mailserver des eigenen Unternehmens oder das Postfach eines Providers. Absender, Empfänger, Betreff, Text oder HTML und Anhänge werden vollständig im Input-Ausdruck angegeben; Pantarey baut nur die Verbindung auf und übergibt die Nachricht. So gehen E-Mails mit beliebigem Absender an beliebige Empfänger, ohne Microsoft-365-Konto und ohne Domainfreigabe in Pantarey.

Technischer Name prio_sendEMailSMTP · Kategorie im Dialog „Service-Task auswählen“: E-Mail


Wann wird dieser Service verwendet?

  • Bestätigungen an Kunden: Die Musterfirma GmbH bestätigt Schulungsanmeldungen von schulung@musterfirma-augsburg.de über den eigenen Mailserver, die Agenda als PDF im Anhang.
  • Versand über einen Provider: Angebote oder Rechnungen gehen über das SMTP-Konto eines Mail-Providers, wenn kein Microsoft 365 im Einsatz ist.
  • Archivkopie: Jede ausgehende Mail wird per bcc an ein Archiv-Postfach kopiert.
  • Fertiger Inhalt: Betreff und HTML wurden bereits in einem vorherigen Schritt erzeugt und sollen unverändert gesendet werden. Für Vorlagen mit Platzhaltern gibt es E-Mail senden (über SMTP) aus Template.

Welcher E-Mail-Service?

Service Absender Empfänger
E-Mail senden (über SMTP) – diese Seite – und E-Mail senden (über SMTP) aus Template eigener Mailserver, jede Adresse, die der Server erlaubt beliebig
E-Mail senden (Microsoft Graph) Microsoft-365-Konto beliebig
E-Mail versenden an externe Empfänger (eigene Domain) eigene Domain, für den Account freigegeben beliebig
E-Mail aus Vorlage versenden über Pantarey (intern) und E-Mail versenden über Pantarey (intern) benachrichtigung@pantarey.io nur Benutzer des eigenen Pantarey-Accounts

Voraussetzungen

  • Ein SMTP-Server, der aus dem Internet erreichbar ist. Die Verbindung wird aus der Pantarey-Cloud aufgebaut; ein Server, der nur im Firmennetz erreichbar ist, funktioniert nicht.
  • Zugangsdaten als Secrets: Benutzername und Passwort werden unter Secrets verwalten mit Secret anlegen gespeichert und im Input als {{secret:NAME}} eingesetzt. Die Platzhalter werden nur in transport.auth.user und transport.auth.pass ersetzt; an jeder anderen Stelle bleibt {{secret:…}} wörtlich stehen.
  • Die Absenderadresse muss vom SMTP-Server akzeptiert werden. Das prüft der Server, nicht Pantarey.

Eingabe

Feld Typ Pflicht Bedeutung
transport Objekt ja Verbindung zum SMTP-Server
transport.host String ja (oder service) Hostname des Servers, z. B. smtp.musterfirma-augsburg.de
transport.port Zahl nein Port, z. B. 587 oder 465; ohne Angabe gilt der Standard der Bibliothek. Ein Text wie "587" wird in eine Zahl gewandelt
transport.secure Boolean nein true für eine von Anfang an verschlüsselte Verbindung (Port 465), sonst false
transport.service String nein Kurzname eines bekannten Anbieters (z. B. Outlook365, Gmail); ersetzt host und port
transport.auth.user, transport.auth.pass String nein Zugangsdaten; die einzigen Felder, in denen {{secret:NAME}} aufgelöst wird
transport.requireTLS, ignoreTLS, opportunisticTLS, authMethod, name, connectionTimeout, greetingTimeout, socketTimeout, dnsTimeout wie nodemailer nein Verbindungsoptionen
transport.tls.rejectUnauthorized, servername, minVersion, maxVersion, ciphers wie nodemailer nein TLS-Optionen
message Objekt ja Die E-Mail
message.from String oder {name, address} ja Absender
message.to, message.cc, message.bcc String (mehrere durch , oder ; getrennt), Array oder {name, address} mindestens eines Empfänger
message.subject String nein Betreff; fehlt er, wird No subject gesetzt
message.text, message.html String nein Inhalt als Text und/oder HTML; fehlt beides, wird der Text No content gesendet
message.replyTo, sender, inReplyTo, references, priority, headers String / Objekt nein Antwortadresse, Threading, Priorität (high, normal, low), eigene Kopfzeilen (nur Textwerte)
message.attachments Datei-Objekt oder Array nein Anhänge aus dem Pantarey-Speicher, je {referenceId, filename, contentType}; filename und contentType werden übernommen

Alle anderen Felder der zugrunde liegenden Bibliothek (etwa sendmail, path, proxy, url, pool, raw, alternatives, icalEvent, envelope, dkim) werden aus Sicherheitsgründen verworfen. Für text und html werden nur Zeichenketten übernommen; Objekte mit path oder href entfallen, ebenso path/href bei Anhängen. Eine Größengrenze für Anhänge gibt es im Service nicht; was angenommen wird, entscheidet der SMTP-Server.

{
  "transport": {
    "host": "smtp.musterfirma-augsburg.de",
    "port": 587,
    "secure": false,
    "auth": { "user": "{{secret:SMTP_USER}}", "pass": "{{secret:SMTP_PASS}}" }
  },
  "message": {
    "from": "schulung@musterfirma-augsburg.de",
    "to": teilnehmer.email,
    "bcc": "schulung-archiv@musterfirma-augsburg.de",
    "subject": "Ihre Anmeldung zur Schulung " & schulung.titel,
    "html": "<p>Guten Tag " & teilnehmer.name & ",</p><p>wir bestätigen Ihre Teilnahme am " & schulung.datum & " in Augsburg.</p>",
    "attachments": [ schulung.agendaPdf ]
  }
}

Ausgabe

{
  "status": 200,
  "response": {
    "messageId": "<a1b2c3@musterfirma-augsburg.de>"
  }
}

response.messageId ist die Kennung, die der Server der Nachricht gegeben hat. response enthält darüber hinaus die Rückmeldung des Servers, etwa angenommene und abgelehnte Adressen. Das Ergebnis landet unter dem Ergebnispfad; wird es nicht weiterverwendet, ist Ergebnis verwerfen die passende Einstellung.


Fehler und Verhalten

  • Fehlende Pflichtfelder brechen den Schritt ab, etwa Missing required field: transport.host, Missing required field: message.from oder Missing recipients: at least one of message.to, message.cc, or message.bcc must be set.
  • Fehler des SMTP-Servers (Anmeldung abgelehnt, Absender nicht erlaubt, Verbindung verweigert) werden unverändert als Fehler weitergegeben.
  • Jeder Fehler wirft: Mit Fehler-Randereignis läuft der Prozess dort weiter; ohne Randereignis endet der Vorgang im Fehler, ein Wiederaufsetzpunkt wird gespeichert und der Prozessverantwortliche erhält eine Fehler-Mail. Der Service liefert nie {status, message} ohne Abbruch.
  • Wiederholungen: Bei vorübergehenden Fehlern (SMTP 450–452, Zeitüberschreitung, abgebrochene Verbindung) wird der Versand bis zu dreimal versucht. Hat der Server die Mail angenommen, aber nicht mehr geantwortet, kann die Mail doppelt ankommen. Fachliche Fehler werden nicht wiederholt.
  • Zeitgrenze: 900 Sekunden je Aufruf.
  • Im Dry Run wird keine Mail gesendet; der Schritt liefert eine Beispielausgabe aus dem Katalog.

Beispiel

Die Musterfirma GmbH bestätigt Schulungsanmeldungen. Nach der Benutzeraufgabe „Anmeldung prüfen“ liegen in der Nachricht teilnehmer (Name, E-Mail) und schulung (Titel, Datum, Agenda als Datei-Objekt agendaPdf).

  1. Secrets SMTP_USER und SMTP_PASS werden einmalig unter Secrets verwalten angelegt.
  2. Input-Ausdruck wie oben; bcc legt die Kopie im Archiv-Postfach ab.
  3. Ergebnispfad versand, damit versand.response.messageId im Process Explorer nachgeschlagen werden kann.
  4. Nächster Schritt: Ein Datenbank-Schritt setzt den Status der Anmeldung auf „bestätigt“. Ein Fehler-Randereignis am Service führt zur Benutzeraufgabe „Versand prüfen“.

Häufige Fragen

Warum steht {{secret:SMTP_PASS}} wörtlich im Betreff oder im Text der Mail?

Secrets werden bei diesem Service nur in transport.auth.user und transport.auth.pass ersetzt. An allen anderen Stellen bleibt der Platzhalter als Text stehen.

Die Mail kam zweimal an. Woran liegt das?

Der Server hat die Mail angenommen, aber zu spät oder mit einem vorübergehenden Fehlercode geantwortet, und der Versand wurde wiederholt. Das ist ein bewusster Kompromiss: lieber eine doppelte als eine fehlende Mail. Wer das ausschließen will, speichert die messageId und prüft vor dem Senden, ob schon eine vorliegt.

Der Server lehnt den Absender ab, obwohl die Zugangsdaten stimmen.

Viele Server erlauben nur Absenderadressen, die zum angemeldeten Konto gehören. message.from muss zu dem Konto in transport.auth passen, oder der Server muss die Adresse als Alias kennen.


Nächster Schritt

E-Mail senden (über SMTP) aus Template: derselbe Versandweg, aber Betreff und Inhalt als Handlebars-Vorlage mit Platzhaltern.