Reference · Tools
Send Email
Sends emails via SMTP protocol with support for plain text, HTML, and binary file attachments.
The Send Email node delivers messages over SMTP with plain text or HTML bodies, CC and BCC recipients, inline images and binary file attachments. A typical build is emailing a generated report to a distribution list using your own mail server rather than a third-party sending API.
- Node type
- Action (binary)
- Parameters
- 8
- Outputs
- Output, Error
- Credentials
- SMTP
Send Email
Send emails via SMTP with attachments
Overview
The Send Email tool sends emails using SMTP protocol via nodemailer. It supports plain text, HTML, and dual-format (both) email bodies. Binary attachments are read from upstream items using the binary store — specify comma-separated binary property names to attach files. Supports CC, BCC, Reply-To, custom priority, and self-signed certificate handling. Each input item sends one email. The transport is created once per execution and reused for all items.
Category: Communication
Tool Name: email_send
Version: 1
Appearance: Icon: lucide-Mail | Color: #00bb88
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires SMTP credentials. See the Credentials Guide for setup instructions.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| From Email | string | Yes | — | Email address of the sender. You can also specify a name: “Nathan Doe nate@example.com”. Supports expressions. |
| To Email | string | Yes | — | Email address of the recipient. You can also specify a name: “Nathan Doe nate@example.com”. Supports expressions. |
| Subject | string | No | — | Subject line of the email. Supports expressions like {{ $json.title }}. |
| Email Format | options | No | html | Format of the email body. |
Options: text (send email as plain text), html (send email as HTML), both (send both formats, recipient’s client selects version to display) | ||||
| Text | string | No | — | Plain text message of email. Supports expressions. (shown when Email Format is text, both) |
| HTML | string | No | — | HTML text message of email. Supports expressions. (shown when Email Format is html, both) |
| Options | collection | No | {} | Additional email settings. Add only the ones you need. |
| — Attachments | string | No | — | Name of the binary properties that contain data to add to email as attachment. Multiple ones can be comma-separated. Reference embedded images or other content within the body of an email message, e.g. |
| — CC Email | string | No | — | Email address of CC recipient. Supports expressions. |
| — BCC Email | string | No | — | Email address of BCC recipient. Supports expressions. |
| — Ignore SSL Issues (Insecure) | boolean | No | false | Whether to connect even if SSL certificate validation is not possible. |
| — Reply To | string | No | — | The email address to send the reply to. Supports expressions. |
| — Priority | options | No | normal | The priority of the email. |
Options: high, normal, low | ||||
| Max Concurrency | number | No | 5 | Maximum number of items to process concurrently. Keep low for SMTP rate limits. |
Output Data
One output item per input item — one email sent per item. The SMTP send result is merged into the item JSON, so the incoming fields pass through and binary data is forwarded unchanged.
{
"accepted": ["recipient@example.com"],
"rejected": [],
"envelope": { "from": "sender@company.com", "to": ["recipient@example.com"] },
"messageId": "<a1b2c3d4@company.com>",
"messageSize": 1842,
"response": "250 2.0.0 OK",
"envelopeTime": 112,
"messageTime": 340
}
accepted/rejected— the recipient addresses the SMTP server took and refused. A send can succeed with a non-emptyrejectedlist, so check it rather than assuming every address was delivered.messageId— the message ID the server assigned; use it to correlate with bounce or delivery reports.response— the raw final reply line from the SMTP server.envelopeTime/messageTime— milliseconds spent negotiating the envelope and transferring the message.
Reference the result downstream by expression, e.g. {{ $json.messageId }}.
Usage Examples
- Send an HTML email with a PDF attachment
- Send a plain text notification email
- Send email with inline images using CID references
- Send email with CC and BCC recipients
- Send bulk emails from a list of contacts
Example Configuration
Basic HTML email:
{
"type": "email_send",
"parameters": {
"fromEmail": "sender@company.com",
"toEmail": "{{ $json.email }}",
"subject": "Welcome to our service",
"emailFormat": "html",
"html": "<h1>Welcome!</h1><p>Thank you for joining us.</p>"
}
}
Plain text email:
{
"type": "email_send",
"parameters": {
"fromEmail": "support@company.com",
"toEmail": "customer@example.com",
"subject": "Account Update",
"emailFormat": "text",
"text": "Your account has been successfully updated."
}
}
Send both formats so the recipient’s client can pick one:
{
"type": "email_send",
"parameters": {
"fromEmail": "marketing@company.com",
"toEmail": "subscriber@example.com",
"subject": "Monthly Newsletter",
"emailFormat": "both",
"text": "Check out our latest updates and offers!",
"html": "<h2>Monthly Newsletter</h2><p>Check out our <strong>latest updates</strong> and offers!</p>"
}
}
Attach binary files and add CC, BCC, Reply-To and priority:
{
"type": "email_send",
"parameters": {
"fromEmail": "John Doe <john@company.com>",
"toEmail": "Jane Smith <jane@example.com>",
"subject": "Important Document",
"emailFormat": "html",
"html": "<p>Please find the attached document.</p><img src='cid:logo'>",
"options": {
"ccEmail": "manager@company.com",
"bccEmail": "archive@company.com",
"replyTo": "noreply@company.com",
"priority": "high",
"attachments": "logo,document"
}
}
}
Send through a server with a self-signed certificate, one item at a time:
{
"type": "email_send",
"parameters": {
"fromEmail": "system@company.com",
"toEmail": "admin@example.com",
"subject": "System Alert",
"emailFormat": "text",
"text": "This is an automated system alert.",
"maxConcurrency": 2,
"options": {
"allowUnauthorizedCerts": true,
"priority": "high"
}
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Send emails via SMTP with optional file attachments from binary data. Supports plain text, HTML, CC/BCC, and inline images.
Important Notes
- Email Format Dependencies: The
textparameter is only available whenemailFormatis"text"or"both". Thehtmlparameter is only available whenemailFormatis"html"or"both". - Collection Structure: All advanced options must be nested under the
optionskey as a flat object structure. - Concurrency: Keep
maxConcurrencylow (1-5) to respect SMTP server rate limits. - Attachments: Reference attachments by name in the
attachmentsfield, and usecid:syntax in HTML to embed images.
Frequently asked questions
Why can I not see the Text or HTML field?
They are gated on Email Format: Text is available when the format is `text` or `both`, HTML when it is `html` or `both`. Set the format first.
Where do the advanced options go?
All nested under the `options` key as a flat object rather than at the top level.
Can it attach files?
Yes — attachments come from binary data on the incoming item, so a document produced upstream can be attached directly.
When should I use this over a provider node?
When you want to send through your own SMTP server. Provider nodes like SendGrid or Mailgun add deliverability tooling and analytics that raw SMTP does not.
Build with the Send Email node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need SMTP credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.