n8n-nodes-base.emailSend Node: Complete Configuration Reference (Parameters, SMTP, Credentials)

Complete field-by-field reference for the n8n-nodes-base.emailSend node: every parameter (fromEmail, toEmail, subject, emailFormat, message, attachments, options) with JSON property names, SMTP credential setup for Gmail and Outlook, the exact JSON node definition block, error code lookup table, and data aggregation patterns.

The n8n Send Email node (n8n-nodes-base.emailSend) and the Gmail node look interchangeable until you hit a threading limitation, an OAuth scope conflict, or an Outlook SMTP deprecation deadline that breaks your production workflow overnight. This n8n-nodes-base.emailSend reference guide covers every configurable field, credential pattern, and error code in one page, so you stop toggling between four browser tabs of fragmented documentation. The real comparison comes down to protocol portability versus provider-specific features, and the answer depends on whether you need email threading.

Key Takeaways
  • The n8n Send Email node uses SMTP, making it provider-agnostic, but it does not support email threading (In-Reply-To headers), so workflows that reply within existing threads must use the Gmail or Outlook node instead.
  • Microsoft will disable Basic Auth for Exchange Online SMTP AUTH by end of December 2026 per the Microsoft Tech Community deprecation timeline, with full removal in H2 2027, affecting every n8n workflow sending via Outlook SMTP.
  • The most common production failure across Rain Automation's client n8n deployments is ECONNRESET caused by port 465 being blocked on cloud-hosted instances; the fix is switching to port 587 with STARTTLS.
  • The appendAttribution option defaults to true, appending "This email was sent automatically with n8n" to every outbound message; disable it in Node Options for professional sender appearance.
  • Never enable allowUnauthorizedCerts in production; it disables TLS certificate validation and exposes your SMTP connection to man-in-the-middle attacks.

What Is n8n-nodes-base.emailSend?

The n8n Send Email node (internal type: n8n-nodes-base.emailSend, operation name: emailSend) is a core SMTP node that sends email through any provider's SMTP server. It supports two operations: Send and Send and Wait for Response. Unlike the Gmail and Outlook nodes, it uses raw SMTP rather than OAuth, which means it works with any email provider but lacks provider-specific features like threading and label management.

The node lives in the @n8n/n8n-nodes-base package and has been stable since v2 of the node definition. When you search for "Send Email" in the n8n node panel, this is the generic SMTP option that appears alongside the provider-specific Gmail and Microsoft Outlook nodes.

Here's the thing most n8n builders miss on day one: choosing between the Send Email node and the Gmail node is not a feature comparison. It's a protocol decision. SMTP gives you portability (swap providers without rebuilding the workflow). OAuth gives you capabilities (threading, labels, read receipts). You can't have both in a single node. If your workflow needs to send emails as part of a broader automation sequence, the Send Email node is the right starting point for most use cases. For a direct side-by-side breakdown of when each node wins, see n8n Send Email vs Gmail Node: Which to Use for Your Workflow.

In my experience building production n8n workflows for clients, about 80% of email automation use cases need "fire and forget" transactional sends: order confirmations, lead notifications, status updates. The Send Email node handles all of those. To put a number on it: Rain Automation's internal Prospect Outreach Sequence, running on n8n, sends roughly 40 emails per week via Google Workspace SMTP relay and has processed over 1,200 sends since launch with exactly one ECONNRESET event (caused by an Oracle Cloud network blip, resolved automatically on retry). That kind of reliability is typical for SMTP sends when port and TLS are configured correctly. The remaining 20% of use cases need threading or OAuth scopes, and that's where you switch to a provider-specific node. If Gmail with OAuth2 is the right fit, the complete walkthrough for connecting Gmail to n8n via OAuth covers credential setup, the 7-day Testing-mode expiry fix, and all four Gmail node operations.

Exact JSON Node Definition for n8n-nodes-base.emailSend

When you export an n8n workflow as JSON, each Send Email node appears as a block with "type": "n8n-nodes-base.emailSend". This is the exact type identifier string that the n8n canvas uses internally, and it's the string you need when searching workflow exports, building nodes via the API, or copying node definitions between workflows.

Here is a complete, copy-ready JSON node definition for a typical HTML email send:

{
  "id": "uuid-here",
  "name": "Send Email",
  "type": "n8n-nodes-base.emailSend",
  "typeVersion": 2.1,
  "position": [380, 300],
  "parameters": {
    "fromEmail": "={{ $json.sender }}",
    "toEmail": "={{ $json.recipient }}",
    "subject": "={{ $json.subject }}",
    "emailFormat": "html",
    "text": "={{ $json.body }}",
    "options": {
      "allowUnauthorizedCerts": false
    }
  }
}

A few things to note about this definition:

  • The type field is always n8n-nodes-base.emailSend (camelCase "S" in "Send"). This is the canonical identifier. If you're grepping workflow JSON exports to find all email-sending nodes, search for this exact string.
  • typeVersion: 2.1 is the current stable version. Older workflows may show typeVersion: 1, which uses a slightly different parameter schema (the emailFormat field didn't exist in v1; all emails were plain text).
  • The parameters object maps directly to the fields you see in the n8n UI. Every field documented in the parameter reference table below has a corresponding key here.
  • Expression syntax (={{ $json.fieldName }}) pulls values from the previous node's output. Static values work too: just enter the string directly without the expression wrapper.

When building nodes programmatically via the n8n API, you POST this JSON structure as part of the workflow's nodes array. The id field should be a valid UUID, and position controls where the node appears on the canvas.

SMTP Credential Reference by Provider

Setting up SMTP credentials correctly is the single biggest source of Send Email node failures. Each provider has different port requirements, authentication methods, and security protocols, and getting any one of them wrong produces a cryptic error with no actionable message in the n8n UI.

Before configuring the node itself, you need to create an SMTP credential in n8n. Go to Credentials, click Add Credential, and select "Send Email Account (SMTP)." The fields below apply to all three common provider configurations.

Provider Credential Table

Setting Gmail SMTP Outlook / M365 SMTP Generic SMTP
Host smtp.gmail.com smtp.office365.com Your provider's SMTP host
Port 587 587 465 (SSL) or 587 (STARTTLS)
SSL/TLS Off (use STARTTLS) Off (use STARTTLS) On for port 465, Off for 587
User [email protected] [email protected] Your SMTP username
Password Gmail App Password (16 chars) Account password (until Dec 2026) Your SMTP password
Auth Method App Password (mandatory since May 2025) Basic Auth (deprecated) Varies by provider
Special Notes Less Secure Apps removed May 2025. Generate App Password in Google Account > Security > 2-Step Verification > App Passwords. Microsoft will disable Basic Auth for SMTP AUTH by end of December 2026 per the Microsoft Tech Community deprecation timeline. Full removal in H2 2027. Migrate to the Microsoft Outlook node with OAuth. Check your provider's docs for App Password or API key requirements.

The Port-Mode Pairing Rule

This trips up even experienced builders, so here's the decision rule you can memorize and apply without looking anything up. We call it the Port-Mode Pairing Rule, and it has three components:

  1. Port 465 always means SSL On. The connection is encrypted from the first byte (implicit TLS). Set the n8n credential's "SSL/TLS" toggle to On. No exceptions.
  2. Port 587 always means SSL Off (STARTTLS). The connection starts unencrypted, then upgrades to TLS via the STARTTLS command. Set the n8n credential's "SSL/TLS" toggle to Off. n8n handles the STARTTLS upgrade automatically.
  3. Disable STARTTLS is only for development. This separate toggle in n8n credentials disables all encryption. The only legitimate use is local development with a mail server that genuinely has no TLS support. Never enable it in production.

If your port and mode don't match one of these three pairings, the connection will fail. Port 465 with SSL Off gives you SSL WRONG_VERSION_NUMBER. Port 587 with SSL On gives you ECONNRESET or a silent hang. The Port-Mode Pairing Rule eliminates both errors.

I had a client last year running self-hosted n8n on an Oracle Cloud instance. Their Send Email node was failing with ECONNRESET every time. The root cause: Oracle Cloud blocks outbound traffic on port 465 by default. Switching to port 587 with STARTTLS (pairing #2 above) fixed it in under two minutes. Across Rain Automation's client deployments, port/TLS mismatch on cloud-hosted instances is the single most common production failure for this node.

If you're troubleshooting a credential issue right now, our complete error guide walks through every failure scenario with exact fixes.

Complete Parameter Reference for n8n-nodes-base.emailSend

Every configurable field in the n8n-nodes-base.emailSend node maps to a specific JSON property name in the node's source code. Knowing these exact property names matters when you're building workflows via the n8n API, copying node JSON between workflows, or debugging expression errors that reference a field by its internal key.

The table below covers every parameter, including required fields, optional fields, and all options. It is extracted from the n8n GitHub source (EmailSend v2) and the node's parameter definitions.

Required and Primary Fields

Field Label JSON Property Type Required Default Accepted Values / Notes
From Email fromEmail string Yes (credential email) Sender address. Must match or be an alias of the authenticated SMTP user on most providers. Supports expressions.
To Email toEmail string Yes (none) Comma-separated for multiple recipients. Supports expressions like {{ $json.email }}.
CC ccEmail string No (none) Comma-separated CC recipients. Supports expressions.
BCC bccEmail string No (none) Comma-separated BCC recipients. Supports expressions.
Reply To replyTo string No (none) Sets the Reply-To header. Lives under options in the JSON definition. Useful when sending from a no-reply address but wanting replies to go to a support inbox.
Subject subject string Yes (none) Plain text subject line. Supports n8n expressions.
Email Format emailFormat enum Yes text text (plain text only), html (HTML only), both (multipart/alternative, sends both plain text and HTML).
Text Body text string Conditional (none) Required when emailFormat is text or both. Plain text body content. Supports expressions.
HTML Body html string Conditional (none) Required when emailFormat is html or both. Full HTML markup. Supports expressions.
Attachments attachments string No (none) Binary property name(s) from a preceding node. Comma-separated for multiple attachments (e.g., data, report, invoice). Case-sensitive.

Options (Advanced Settings)

These fields live under the options object in the node's JSON definition:

Field Label JSON Property Type Default Accepted Values / Notes
Append n8n Attribution appendAttribution boolean true true or false. When true, appends "This email was sent automatically with n8n" to the email body. Disable for professional sends.
Ignore SSL/TLS Issues allowUnauthorizedCerts boolean false true or false. Disables TLS certificate validation. Never enable in production.
TLS tls boolean true true or false. Controls whether the SMTP connection uses TLS. Defaults to true. Only disable for local development mail servers with no TLS support.

A Note on Expressions

Every field that accepts a string also accepts n8n expressions. The most common pattern is pulling recipient addresses from incoming webhook data: {{ $json.customerEmail }} in the To Email field. But here's something the docs don't emphasize: if your expression resolves to undefined or an empty string, the node throws a generic error rather than a helpful "missing required field" message. Always add an IF node before Send Email to validate that required fields exist in your workflow data.

Field Reference: Node Options (Advanced)

The Options section of the Send Email node contains fields that control reply routing, branding, and TLS security. Two of them have defaults that most production workflows should change.

Why You Should Always Disable appendAttribution

The appendAttribution option defaults to true, which means every email your workflow sends includes a footer line crediting n8n. For internal notifications, that's fine. For client-facing emails (lead follow-ups, order confirmations, automated responses), it looks unprofessional.

At Rain Automation, we disable this on every client deployment. It's a one-click toggle under Node Options, but it's the single most overlooked setting by new n8n users.

Why You Should Never Enable allowUnauthorizedCerts in Production

The n8n UI presents allowUnauthorizedCerts as a neutral toggle labeled "Ignore SSL/TLS Issues." It is not neutral. Enabling it disables all certificate validation on the SMTP connection, which means your workflow will happily send emails (including credentials in the SMTP handshake) over a connection where a man-in-the-middle attacker has substituted their own certificate.

The correct fix for TLS errors is never to disable validation. Instead:

  1. If you're getting SSL WRONG_VERSION_NUMBER: you're using SSL mode on a STARTTLS port (or vice versa). Switch your port/TLS configuration per the Port-Mode Pairing Rule above.
  2. If you're getting certificate errors on a self-hosted mail server: install a valid certificate (Let's Encrypt is free) or configure your server to use a trusted CA.
  3. If you're behind a corporate proxy that intercepts TLS: add the proxy's CA certificate to your n8n server's trust store.

The only legitimate use case for allowUnauthorizedCerts is local development with a self-signed cert, and even then, you should remove it before deploying to production.

Send and Wait for Response: Reference

The Send and Wait for Response operation pauses workflow execution after sending an email, then resumes when the recipient clicks a link or submits a form embedded in the email. This is how you build human-in-the-loop approval workflows, feedback collection, and escalation chains inside n8n.

This operation uses the same SMTP credential and shares most fields with the standard Send operation, but adds a response collection layer.

Setting JSON Property Options Notes
Response Type responseType approval, freeText, customForm Determines what the recipient sees when they click the response link.
Approval Type approvalType approveOnly, approveReject Only applies when responseType is approval.
Approve Button Label approveLabel string Default: "Approve"
Reject Button Label rejectLabel string Default: "Reject". Only shown for approveReject.
Free Text Prompt message string Prompt text shown above the text input for freeText response type.
Limit Wait Time limitWaitTime boolean When enabled, the workflow auto-resumes after the timeout with no response data.
Wait Time Limit waitTimeLimit number Seconds to wait before auto-resuming. Only active when limitWaitTime is true.

Important Execution Implications

When using Send and Wait, the workflow execution stays in a "waiting" state until the recipient responds (or the time limit expires). On n8n Cloud, waiting executions don't count against your active execution limit. On self-hosted n8n, they consume a worker slot if you're using queue mode with limited concurrency.

For approval workflows that might take days to resolve, always enable limitWaitTime with a reasonable timeout (48 to 72 hours). An unbounded wait means the execution stays open indefinitely, which can cause confusion when auditing your execution history and potentially hits n8n's configurable execution timeout.

Binary Attachments: How They Work

The Send Email node does not have a file upload field. Instead, it reads binary data from previous nodes in the workflow via a named binary property. You must stage your attachment in a preceding node (Read/Write Files, HTTP Request, or any node that outputs binary data) before the Send Email node can attach it.

Here's the pattern:

Step-by-Step Attachment Workflow

  1. Source the file. Use one of these nodes to get your file into binary format:

    • Read/Write Files node: reads a file from disk or S3 into binary
    • HTTP Request node: downloads a file from a URL into binary
    • Spreadsheet File node: converts JSON data to an Excel/CSV binary
    • Code node: generates binary data programmatically
  2. Note the binary property name. Each source node outputs binary data under a named property. The default name is usually data, but it varies by node. Check the output panel after executing the source node.

  3. Enter the property name in Send Email. In the Send Email node's Attachments field (attachments), enter the exact binary property name from step 2. For multiple attachments, comma-separate the names: data, report, invoice.

Common Attachment Mistakes

  • Wrong binary property name: The attachment field is case-sensitive. Data and data are different. Always verify the exact name in the previous node's output panel.
  • Binary data not present: If the source node ran but produced no binary output (empty file, failed download), the Send Email node sends the email without the attachment silently. No error, no warning. Add a validation step.
  • File too large: SMTP servers typically reject attachments over 25 MB (Gmail's limit) or 35 MB (Outlook's limit for Microsoft 365 enterprise; Outlook.com consumer accounts cap at 20 MB). The error will come from the SMTP server, not from n8n, so it shows as a generic send failure.

For a full walkthrough with screenshots, see our Send Email node tutorial.

Avoiding the Email Loop: Data Aggregation Pattern

By default, the n8n Send Email node fires once per input item. If your workflow processes 50 leads from a spreadsheet, the node sends 50 separate emails. This is the most common "surprise" behavior reported in the n8n community forums, and it's by design, not a bug.

The fix is the Aggregate node (formerly "Item Lists" in older n8n versions). Place it immediately before the Send Email node to merge all input items into a single item, then use an expression to build a summary in the email body.

The Aggregation Pattern

  1. Add an Aggregate node between your data source and the Send Email node.
  2. Set the operation to "Aggregate All Item Data" (this collapses N items into 1 item with an array).
  3. In the Send Email node's HTML body, use an expression to loop through the aggregated data:
<table>
  <tr><th>Name</th><th>Email</th><th>Status</th></tr>
  {{ $json.data.map(item =>
    `<tr><td>${item.name}</td><td>${item.email}</td><td>${item.status}</td></tr>`
  ).join('') }}
</table>

This sends one email with an HTML table containing all 50 rows instead of 50 separate emails with one row each.

The Empty Array Edge Case

Something the community threads don't cover: what happens when the Aggregate node receives zero input items? I've hit this in production. The Aggregate node still outputs one item, but $json.data is an empty array. Your .map() expression runs fine and returns an empty string, so the Send Email node fires successfully and delivers an email with an empty table body (just headers, no rows). No error, no warning.

This is a subtle problem because the workflow shows a green checkmark even though it sent a useless email. The fix is to add an IF node after the Aggregate node that checks {{ $json.data.length > 0 }} and routes the zero-item case to a No Operation node (or skips the email entirely). At Rain Automation, we add this guard to every aggregation-to-email pattern after getting burned by a Monday-morning summary email that arrived completely blank.

When You Actually Want One Email Per Item

Sometimes per-item sending is exactly what you need, for example, personalized lead follow-up emails where each recipient gets different content. In that case, don't aggregate. Just make sure your To Email field uses an expression that pulls each item's unique email address: {{ $json.email }}.

Error Code Lookup Table

When the Send Email node fails, n8n surfaces the SMTP error in the execution log, but the error messages are cryptic shorthand from the Nodemailer library, not human-readable descriptions. This table maps every common error to its cause and fix.

Error Code / String Cause Fix Affected Provider(s)
535 5.7.8 Username and Password not accepted Wrong password, or using account password instead of App Password Generate a Gmail App Password (Google Account > Security > 2-Step Verification > App Passwords). Plain passwords stopped working May 2025. Gmail
ECONNRESET SMTP connection dropped mid-handshake. Usually a TLS/port mismatch. Switch from port 465 (SSL) to port 587 (STARTTLS). Cloud providers (Oracle, AWS Lightsail, some GCP instances) block port 465 outbound by default. Apply the Port-Mode Pairing Rule. All providers on cloud hosts
ECONNREFUSED n8n can't reach the SMTP server at all. Verify host/port. Check firewall rules. Confirm the SMTP server is running. Try telnet smtp.gmail.com 587 from the n8n server. All
ETIMEDOUT Connection attempt timed out. Port is blocked at the network level. Check if your hosting provider blocks SMTP ports. Many cloud providers require you to open a support ticket to unblock port 25/465/587. All providers on cloud hosts
SSL WRONG_VERSION_NUMBER Using SSL mode on a STARTTLS port (587) or STARTTLS mode on an SSL port (465). Match your SSL/TLS toggle to your port per the Port-Mode Pairing Rule: Port 465 = SSL On. Port 587 = SSL Off (STARTTLS). All
Internal error n8n's generic wrapper hiding the real SMTP error. Add an Error Trigger node connected to the Send Email node. The error output contains the full Nodemailer error object with the actual SMTP response code. All
Invalid login: 534-5.7.9 Application-specific password required Gmail account has 2FA enabled but you're using the account password. Same fix as 535 5.7.8: generate and use an App Password. Gmail
Authentication unsuccessful Outlook Basic Auth disabled by admin or deprecated. Check if your M365 tenant has disabled SMTP AUTH. Migrate to the Microsoft Outlook node with OAuth. Outlook / M365

For deeper troubleshooting with step-by-step screenshots, see our dedicated guide: n8n Send Email Node Not Working: Common Errors and Fixes.

If the node runs without an error but the recipient never gets the email, the problem is downstream of SMTP. SPF or DKIM misalignment, spam folder filtering, or a relay that silently drops the message are the most common culprits. Our six-step fix for when n8n email sends but is not received covers that specific scenario.

And a broader tip from the r/n8n community on Reddit: for production bulk sending (100+ emails per run), skip the Send Email node entirely and use the HTTP Request node to call SendGrid, Mailgun, or Resend's API directly. SMTP was designed for individual transactional sends, not bulk campaigns, and you'll hit Gmail's 500/day or Workspace's 2,000/day sending limits quickly.

If you haven't settled on a relay yet, this guide to choosing a production SMTP provider for n8n breaks down Gmail relay, Mailgun, SendGrid, and Postmark so you can pick based on your volume and hosting environment.

If you're setting up Mailgun as your relay and want the step-by-step n8n Mailgun node setup for CRM lead notifications, that walkthrough covers domain verification, SMTP credentials, and the webhook trigger pattern in one place.

Send Email (SMTP) vs Gmail Node vs Outlook Node

The naive comparison says "use Gmail node for Gmail, Outlook node for Outlook, Send Email for everything else." The real comparison is about protocol trade-offs: SMTP portability versus OAuth capabilities, and each choice has consequences for threading, authentication longevity, and sending limits.

Dimension Send Email (SMTP) Gmail Node Microsoft Outlook Node
Protocol SMTP (Nodemailer) Gmail API (OAuth 2.0) Microsoft Graph API (OAuth 2.0)
Auth Method Username + password (or App Password) OAuth 2.0 with Google Cloud Console OAuth 2.0 with Azure AD
Email Threading Not supported (no In-Reply-To header) Full threading support Full threading support
Label / Folder Management Not supported Apply/remove Gmail labels Move to Outlook folders
Read Receipts Not supported Supported Supported
Send from Alias Supported (set fromEmail to alias) Not supported (API ignores Send-As aliases) Supported via shared mailbox
Sending Limits Provider-dependent (Gmail: 500/day free, 2,000/day Workspace) Same Gmail limits Exchange Online: 10,000/day
Provider Lock-in None (swap SMTP host to change provider) Google only Microsoft only
Setup Complexity Low (host, port, user, password) Medium (OAuth consent screen, scopes) Medium-High (Azure app registration)
Best For Transactional sends, multi-provider environments, simple notifications, alias sending Gmail-centric workflows needing threading or label management M365-centric workflows needing threading or folder management

The Gmail Alias Exception

Here's a nuance the Reddit threads and official docs don't mention: even for Gmail, the Send Email node via Gmail SMTP is preferable to the Gmail node when you need to send from an alias address. If you've configured additional "Send mail as" addresses in Gmail Settings (Settings > Accounts and Import > Send mail as), the Gmail API node ignores those aliases entirely. It always sends from the primary authenticated address regardless of what you put in the From field. But the Send Email node via SMTP honors the fromEmail field, so you can send from any alias your Gmail account is authorized to use. This is a testable difference: set up a "Send mail as" alias in Gmail, try sending from it with both nodes, and you'll see the Gmail node silently reverts to the primary address while the SMTP node sends from the alias.

So if your workflow sends client-facing emails from a shared alias like [email protected] while authenticating with your personal Gmail account, the Send Email node is your only option.

Choose Send Email (SMTP) If:

  • You need provider portability (today Gmail, tomorrow SendGrid, no workflow changes)
  • Your emails are transactional and don't need threading
  • You want the simplest possible setup
  • You're sending through a relay service (Amazon SES, Mailgun, SendGrid via SMTP)
  • You need to send from a Gmail alias address (the Gmail API node doesn't support this)

Choose Gmail or Outlook Node If:

  • You need to reply within an existing email thread
  • You need to read, search, or manage emails (not just send)
  • You want OAuth (no password storage, token refresh handled by n8n)
  • You're building a CRM integration where email context matters

For a deeper comparison with workflow examples, see our Send Email vs Gmail Node comparison.

Edge Cases and Advanced Patterns

Beyond the standard send-and-forget pattern, the Send Email node has behaviors around HTML rendering, character encoding, and multi-item batching that the official documentation doesn't fully cover.

HTML Email Rendering

When using emailFormat: "html", the node passes your HTML directly to Nodemailer without sanitization. This means you can include inline CSS, images via <img> tags with external URLs, and even embedded base64 images. But email client rendering is notoriously inconsistent. Gmail strips <style> tags in the <head>, so always use inline styles. Outlook renders with Microsoft Word's HTML engine (yes, seriously), so <div> layouts break. Use <table> layouts for cross-client compatibility.

Unicode and Special Characters

The node defaults to UTF-8 encoding for both subject and body. Emoji in subject lines work reliably. However, if you're pulling data from a database or API that returns content in a different encoding (ISO-8859-1, Windows-1252), you may see garbled characters. Convert encoding in a Code node before the Send Email node.

Rate Limiting

The Send Email node has no built-in rate limiting. If your workflow sends 500 emails in a tight loop, it fires them as fast as your SMTP server accepts them. For Gmail, this can trigger rate limiting within seconds. Add a Wait node between iterations or use the Batch node to process emails in groups of 10 with a 1-second delay between batches.

Frequently Asked Questions

How do I set up SMTP credentials in n8n?

Go to Credentials in the n8n sidebar, click Add Credential, and select "Send Email Account (SMTP)." Enter your SMTP host, port, username, and password. For Gmail, use smtp.gmail.com on port 587 with a 16-character App Password generated from your Google Account security settings. Leave SSL/TLS off for port 587 because n8n handles STARTTLS automatically.

How do I send an attachment using the n8n Send Email node?

Stage your file as binary data in a preceding node (Read/Write Files, HTTP Request, or Spreadsheet File). Note the binary property name from that node's output (usually data). In the Send Email node, enter that property name in the Attachments field. For multiple files, comma-separate the property names: invoice, contract.

What is appendAttribution and how do I turn it off?

The appendAttribution option adds "This email was sent automatically with n8n" to every outbound email. It defaults to on. To disable it, open the Send Email node, expand the Options section at the bottom, and toggle "Append n8n Attribution" to off. The JSON property is appendAttribution: false in the node options.

Why does my Send Email node send one email per item?

The Send Email node executes once per input item by design. If 50 items enter the node, it sends 50 emails. To send a single summary email containing all items, add an Aggregate node before the Send Email node to merge all items into one, then use an expression to build a table or list in the email body from the aggregated array.

Does n8n support Outlook SMTP after December 2026?

Not with Basic Auth. Microsoft is disabling Basic Authentication for SMTP AUTH on Exchange Online by the end of December 2026, with full removal planned for H2 2027 per the official deprecation timeline. After that date, the Send Email node will not work with Outlook credentials. Migrate to the Microsoft Outlook node, which uses OAuth 2.0 via Microsoft Graph API.

What port should I use for Gmail SMTP in n8n?

Use port 587 with the SSL/TLS toggle set to Off. This enables STARTTLS, which is Gmail's preferred encryption method for SMTP. Port 465 (implicit SSL) also works but is more frequently blocked by cloud hosting providers. If you're on Oracle Cloud, AWS Lightsail, or similar platforms, port 587 is the safer choice.

Next Steps

If this reference answered your configuration question, bookmark it. We update it when n8n releases node changes.

For hands-on setup with screenshots, start with our n8n Send Email Node Tutorial. If your node is throwing errors right now, jump to Send Email Node Not Working: Common Errors and Fixes.

And if you're building a workflow that needs more than email (lead routing, CRM updates, automated follow-up sequences, approval chains), get in touch with our team. We build production n8n workflows for businesses that don't have time to debug SMTP errors.

Some links on this page are affiliate links. Rain Automation may earn a commission at no extra cost to you.