<!-- BusyBot node reference — https://busybot.net/tools/email-send/ -->

> Node: Send Email (`email_send`) · Action (binary) · v1
> Category: Communication · Credentials: SMTP (`smtpCredentials`)
> Updated: 2026-08-16

# 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](https://busybot.net/credentials/smtp-credentials/) 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. <img src="cid:image_1">. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |
| — 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.

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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 `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.