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
bccan 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 intransport.auth.userundtransport.auth.passersetzt; 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.fromoderMissing 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).
- Secrets
SMTP_USERundSMTP_PASSwerden einmalig unter Secrets verwalten angelegt. - Input-Ausdruck wie oben;
bcclegt die Kopie im Archiv-Postfach ab. - Ergebnispfad
versand, damitversand.response.messageIdim Process Explorer nachgeschlagen werden kann. - 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.