Reference · Tools

Send Email

Sends emails via SMTP protocol with support for plain text, HTML, and binary file attachments.

Action (binary) Communication v1 Binary data

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

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires SMTP credentials. See the Credentials Guide for setup instructions.

Parameters

ParameterTypeRequiredDefaultDescription
From EmailstringYesEmail address of the sender. You can also specify a name: “Nathan Doe nate@example.com”. Supports expressions.
To EmailstringYesEmail address of the recipient. You can also specify a name: “Nathan Doe nate@example.com”. Supports expressions.
SubjectstringNoSubject line of the email. Supports expressions like {{ $json.title }}.
Email FormatoptionsNohtmlFormat 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)
TextstringNoPlain text message of email. Supports expressions. (shown when Email Format is text, both)
HTMLstringNoHTML text message of email. Supports expressions. (shown when Email Format is html, both)
OptionscollectionNo{}Additional email settings. Add only the ones you need.
— AttachmentsstringNoName 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. . Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use.
— CC EmailstringNoEmail address of CC recipient. Supports expressions.
— BCC EmailstringNoEmail address of BCC recipient. Supports expressions.
— Ignore SSL Issues (Insecure)booleanNofalseWhether to connect even if SSL certificate validation is not possible.
— Reply TostringNoThe email address to send the reply to. Supports expressions.
— PriorityoptionsNonormalThe priority of the email.
Options: high, normal, low
Max ConcurrencynumberNo5Maximum 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-empty rejected list, 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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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 text parameter is only available when emailFormat is "text" or "both". The html parameter is only available when emailFormat is "html" or "both".
  • Collection Structure: All advanced options must be nested under the options key as a flat object structure.
  • Concurrency: Keep maxConcurrency low (1-5) to respect SMTP server rate limits.
  • Attachments: Reference attachments by name in the attachments field, and use cid: 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 BusyBot

Last updated . Spotted something wrong? Tell us.