All nodes/Integrations/Email
Send Email
Sends an email: recipient, subject, body (plain text or HTML). Runs deterministically (not as an agent tool). Requires Email Config via the 'email_config' port.
Type in the graph: send_email
Exec
An error branch can be enabled (expose_error_output) to handle failures on their own path.
Try it
Minimal working workflow
- Execute
- Data
- Execute + Data
Pick your own connection or knowledge base first — the graph carries REPLACE_ME.
When to use it
A graph step that sends one message whose recipient, subject and body you decide — not the model. That is what notifications, scheduled reports and ticket replies need. When the model should decide whether to write and to whom, use the Email Tool instead: it attaches to an agent and the model calls it itself.
How it works
“To”, “Subject”, “Body”, “CC”, “From Address” and “From Name” are template fields, so run data
can be substituted into them: {{ inputs.input }}, {{ nodes.<id>.output.email }},
{{ variables.subject }}. Several recipients are comma-separated; the CC addresses are added
to the same delivery.
The sender is resolved in order: “From Address” on the node, then the sender saved on the
integration, then the login. The envelope and the From header always agree — otherwise the
message fails SPF at the recipient. The platform sets the date and a Message-ID itself and
returns that id in the output (success, message_id).
The “HTML Body” switch changes the content type of the message: the body is sent either as plain text or as HTML. No second copy in the other format is attached.
Common mistakes
- A blank “To” or “Subject”. Both are required: the validator says so before the run, and a template that renders to an empty string stops the node during it.
- A line break in an address, the subject or the sender name. Such a value is rejected — it is how extra headers get injected into a message.
- HTML without the switch. A body full of tags arrives with its tags showing while “HTML Body” is off.
- Attachments. The node sends the message text only; it has no port for files.
- An unhandled SMTP refusal. A wrong password, a rejected address, an unreachable server — each stops the node. Without the “Error output” enabled, the whole run stops there.
Inputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Email Configemail_config | Datadata | — | required |
Outputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Successoutput | Execute + Dataexecute_data | object | |
Erroron_error | Execute + Dataexecute_data | — | shown when expose_error_output = true |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
Email connectionconnection_id | string | "" | Saved workspace email connection, so a simple graph does not need a separate Email Config node. A node wired to the 'email_config' port wins over this field. connection: emailoverridden by port: email_config |
Toto | string | "" | Recipient(s), comma-separated supports templates |
Subjectsubject | string | "" | Email subject supports templates |
Bodybody | string | "" | Email body (plain text or HTML) supports templates |
HTML Bodyis_html | boolean | false | Send body as HTML |
| Advanced | |||
CCcc | string | "" | CC recipients supports templates |
From Addressfrom_address | string | "" | Overrides the connection's sender for this message; empty = connection default supports templates |
From Namefrom_name | string | "" | Display name shown to recipients; empty = connection default supports templates |
Shared fields
Every node has these three — the platform adds them, not the node author.
expose_error_output— When enabled, show an execution output to connect nodes that run if this step fails.