<p><img class="alignnone size-full wp-image-4366" src="https://flowgenius.in/wp-content/uploads/2026/01/Child-20-Cluster-9.png" alt="" /></p>
<p style="text-align: center;">Step by Step Guide to solve n8n SMTP Node Send Failure Error</p>
<p> </p>
<hr />
<p> </p>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Who this is for:</strong><br />
Automation engineers and DevOps professionals using n8n to send transactional email via an SMTP server. <strong>We cover this in detail in the</strong> <a href="https://flowgenius.in/n8n-node-errors-troubleshooting/">n8n Node Specific Errors Guide.</a></p>
<div style="margin: 55px 0;">
<hr />
</div>
<h2 style="margin-bottom: 45px; line-height: 1.3;">Quick Diagnosis</h2>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Problem:</strong> The SMTP node reports success but no email arrives.</p>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Quick fix:</strong></p>
<table style="border-collapse: collapse; width: 100%; margin-bottom: 2em;">
<thead>
<tr>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Step</th>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Action</th>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Result</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">1</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Open the node → <strong>Credentials</strong> → verify <strong>SMTP host</strong>, <strong>port</strong>, <strong>TLS/SSL</strong> settings.</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Correct connection details.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">2</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">In <strong>Additional Fields</strong> enable <strong>Raw Output</strong> and run the workflow.</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">View the server’s response in the execution log.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">3</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">If the response is <code>250 OK</code> but the mail never arrives, check <strong>spam/junk</strong> and <strong>DMARC/SPF</strong> alignment for the sender domain.</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Confirms delivery vs. rejection.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">4</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Add a <strong>Set</strong> node before the SMTP node to output the full <strong>email headers</strong> and compare them with a known‑working message.</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Detect missing/invalid headers (<code>From</code>, <code>To</code>).</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">5</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">If the server returns <code>550 5.1.1</code> or similar, correct the recipient address or whitelist the sending IP.</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Resolves address‑rejection errors.</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 2em; line-height: 1.9;">Run the workflow again – the email should now be delivered.</p>
<div style="margin: 55px 0;">
<hr />
</div>
<h2 style="margin-bottom: 45px; line-height: 1.3;">1. Why the SMTP node can appear “successful” while the mail never lands</h2>
<p><strong>If you encounter any</strong> <a href="/n8n-excel-node-file-corruption">n8n excel node file corruption</a><strong> resolve them before continuing with the setup.</strong></p>
<p style="margin-bottom: 2em; line-height: 1.9;">Even with a <strong>Success</strong> status, n8n only confirms that the <strong>SMTP transaction completed</strong>. Delivery depends on several layers:</p>
<ul style="margin-bottom: 1.8em; line-height: 1.9;">
<li><strong>Server response codes</strong> – n8n logs only the final code (e.g., <code>250 OK</code>).</li>
<li><strong>Recipient validation</strong> – some providers accept the message then bounce later.</li>
<li><strong>Spam‑filtering</strong> – DMARC, SPF, DKIM mis‑configurations cause silent drops.</li>
<li><strong>Network‑level blocks</strong> – outbound port 25 may be blocked by the host provider.</li>
</ul>
<p style="margin-bottom: 2em; line-height: 1.9;">Understanding these layers prevents endless “node ran fine but no mail” loops.</p>
<div style="margin: 55px 0;">
<hr />
</div>
<h2 style="margin-bottom: 45px; line-height: 1.3;">2. Step‑by‑Step Diagnostic Workflow</h2>
<p><strong>If you encounter any</strong> <a href="/n8n-mysql-node-connection-timeout">n8n mysql node connection timeout</a><strong> resolve them before continuing with the setup.</strong></p>
<h3 style="margin-bottom: 45px; line-height: 1.3;">2.1 Capture the raw SMTP conversation</h3>
<ol style="margin-bottom: 1.8em; line-height: 1.9;">
<li>Open the <strong>SMTP node</strong> → <strong>Additional Fields</strong> → toggle <strong>Raw Output</strong>.</li>
<li>Execute the workflow with a test payload.</li>
<li>In the <strong>Execution Log</strong>, expand <strong>Raw Output</strong>.</li>
</ol>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Sample transcript – part 1 (handshake & envelope):</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto;">EHLO my.n8n.instance
250-mail.example.com
250-PIPELINING
250-8BITMIME
250-STARTTLS
250-AUTH PLAIN LOGIN
250 OK
MAIL FROM:<n8n@mydomain.com>
250 2.1.0 Ok
</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Sample transcript – part 2 (recipient & data):</strong></p>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto;">RCPT TO:<invalid@example.org>
550 5.1.1 <invalid@example.org>: Recipient address rejected
DATA
354 End data with <CR><LF>.<CR><LF>
...
</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><em>EEFA note:</em> If you see <code>250 OK</code> after <code>DATA</code> but the email never arrives, the server may have accepted the message for <strong>asynchronous processing</strong> and later generated a bounce. Check the server’s <strong>mail queue</strong> or <strong>bounce mailbox</strong>.</p>
<h3 style="margin-bottom: 45px; line-height: 1.3;">2.2 Verify credentials & connection security</h3>
<table style="border-collapse: collapse; width: 100%; margin-bottom: 2em;">
<thead>
<tr>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Setting</th>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Typical Values</th>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Common Pitfalls</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;"><strong>Host</strong></td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">smtp.gmail.com, mail.mycompany.com</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Typos, missing sub‑domain (mail.)</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;"><strong>Port</strong></td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">465 (SSL) or 587 (STARTTLS)</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Using 25 on cloud providers that block it</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;"><strong>TLS/SSL</strong></td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">SSL for 465, STARTTLS for 587</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Mixing SSL with STARTTLS causes handshake failures</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;"><strong>Auth Type</strong></td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Login, Plain, OAuth2</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Using OAuth2 with a password‑only account</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 2em; line-height: 1.9;"><em>EEFA warning:</em> Providers such as Google Workspace require <strong>App Passwords</strong> or <strong>OAuth2</strong> scopes. Supplying a regular password yields <code>535 5.7.8 Authentication credentials invalid</code> – the node may still report *success* if the error is swallowed by a try‑catch block.</p>
<h3 style="margin-bottom: 45px; line-height: 1.3;">2.3 Inspect email headers generated by n8n</h3>
<p style="margin-bottom: 2em; line-height: 1.9;">Add a <strong>Set</strong> node before the SMTP node to expose the headers:</p>
<table style="border-collapse: collapse; width: auto; margin-bottom: 2em;">
<thead>
<tr>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Field</th>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Value</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">emailHeaders</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">{{ $json[“headers”] || {} }}</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">rawMessage</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">{{ $json[“raw”] }}</td>
</tr>
</tbody>
</table>
<p style="margin-bottom: 2em; line-height: 1.9;">Run the workflow and review the output. Typical missing‑header issues:</p>
<ul style="margin-bottom: 1.8em; line-height: 1.9;">
<li><strong>Missing <code>From</code></strong> → <code>550 5.6.0 Missing From header</code>.</li>
<li><strong>Invalid <code>To</code> format</strong> → e.g., “john.doe” instead of “john.doe@example.com”.</li>
<li><strong>Wrong <code>Content-Type</code></strong> → message treated as plain text when HTML is expected.</li>
</ul>
<h3 style="margin-bottom: 45px; line-height: 1.3;">2.4 Check server‑side queues & bounce handling</h3>
<p style="margin-bottom: 2em; line-height: 1.9;">If the raw output ends with <code>250 OK</code> but the recipient reports non‑delivery:</p>
<ol style="margin-bottom: 1.8em; line-height: 1.9;">
<li>SSH into the SMTP server (or ask your admin) and run the appropriate queue command.</li>
<li><strong>Postfix:</strong>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto;">postqueue -p
</pre>
</li>
<li><strong>Exim:</strong>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto;">exim -bp
</pre>
</li>
<li>Locate the message ID from the n8n log.</li>
<li>If it’s in a <strong>deferred</strong> state, note the reason (e.g., DNS lookup failure, greylisting).</li>
</ol>
<p style="margin-bottom: 2em; line-height: 1.9;"><em>EEFA tip:</em> Cloud‑hosted services (Mailgun, SendGrid) expose an **API dashboard** where you can search the message ID and view bounce details.</p>
<div style="margin: 55px 0;">
<hr />
</div>
<h2 style="margin-bottom: 45px; line-height: 1.3;">3. Common Failure Scenarios & Exact Fixes</h2>
<table style="border-collapse: collapse; width: 100%; margin-bottom: 2em;">
<thead>
<tr>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Error</th>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Root Cause</th>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: left;">Fix</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">550 5.1.1 – Recipient address rejected</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Invalid or non‑existent mailbox</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Verify the <code>To</code> address; add an <strong>Email Validation</strong> node before SMTP.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">421 4.4.2 – Connection timed out</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Outbound port blocked by firewall or provider</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Open port 25/587/465 in the server’s security group; request removal of SMTP throttling on cloud platforms.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">535 5.7.8 – Authentication failed</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Wrong credentials or missing App Password</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Regenerate credentials; for Gmail enable <strong>2‑Step Verification</strong> and create an <strong>App Password</strong>.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">452 4.3.1 – Insufficient system storage</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Mail queue full on the SMTP server</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Clean old messages or increase disk quota.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">No error, but email lands in <strong>spam</strong></td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">DMARC/SPF/DKIM mis‑alignment</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Add an SPF record (<code>v=spf1 include:mail.mycompany.com -all</code>), configure DKIM signing, ensure <code>From</code> domain matches the signing domain.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0;">250 OK but no delivery after 24 h</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Remote server silently discarding (blacklist)</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Check if the sending IP appears on an RBL (e.g., Spamhaus); request delisting or switch to a reputable SMTP relay.</td>
</tr>
</tbody>
</table>
<div style="margin: 55px 0;">
<hr />
</div>
<h2 style="margin-bottom: 45px; line-height: 1.3;">4. Production‑Ready Checklist</h2>
<p><strong>If you encounter any </strong><a href="/n8n-wait-node-timeout">n8n wait node timeout </a><strong>resolve them before continuing.</strong></p>
<table style="border-collapse: collapse; width: auto; margin-bottom: 2em;">
<thead>
<tr>
<th style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">Steps</th>
<th style="padding: 13px; border: 1px solid #e0e0e0;">Item</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">✔</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Credentials – Verify host, port, TLS/SSL, username, password (or OAuth token).</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">✔</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Raw Output – Enable in node → confirm server response codes.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">✔</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Headers – Ensure From, To, Subject, Content-Type are present and correctly formatted.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">✔</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Recipient Validation – Use an Email Validation node or regex before sending.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">✔</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Spam Checks – Confirm SPF/DKIM/DMARC for the sender domain.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">✔</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Network – Outbound SMTP ports open on the n8n host; no provider throttling.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">✔</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Queue Monitoring – Periodically inspect the SMTP server’s queue for deferred messages.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">✔</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Logging – Store the raw SMTP transcript in a Log node for audit trails.</td>
</tr>
<tr>
<td style="padding: 13px; border: 1px solid #e0e0e0; text-align: center;">✔</td>
<td style="padding: 13px; border: 1px solid #e0e0e0;">Error Handling – Wrap the SMTP node in a Try/Catch workflow; on error, send a Slack alert with the raw output.</td>
</tr>
</tbody>
</table>
<div style="margin: 55px 0;">
<hr />
</div>
<h2 style="margin-bottom: 45px; line-height: 1.3;">5. Example: Minimal n8n workflow that guarantees visibility</h2>
<h3 style="margin-bottom: 45px; line-height: 1.3;">5.1 SMTP node (raw output enabled)</h3>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto;">{
"name": "SMTP Send",
"type": "n8n-nodes-base.smtp",
"typeVersion": 1,
"position": [400, 300],
"parameters": {
"email": "test@example.com",
"subject": "n8n SMTP test",
"text": "Hello from n8n!",
"options": { "rawOutput": true }
},
"credentials": { "smtp": "MySMTP" }
}
</pre>
<h3 style="margin-bottom: 45px; line-height: 1.3;">5.2 Capture Raw node (stores transcript)</h3>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto;">{
"name": "Capture Raw",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [600, 300],
"parameters": {
"functionCode": "return [{ json: { raw: $node[\"SMTP Send\"].json.rawOutput } }];"
}
}
</pre>
<h3 style="margin-bottom: 45px; line-height: 1.3;">5.3 Slack alert node (fires only on error)</h3>
<pre style="background: #fafafa; padding: 20px; border: 1px solid #e0e0e0; overflow: auto;">{
"name": "Slack Alert",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"position": [800, 300],
"parameters": {
"text": "SMTP node failed – see logs",
"channel": "#alerts"
},
"conditions": { "error": true }
}
</pre>
<p style="margin-bottom: 2em; line-height: 1.9;"><strong>Workflow connections:</strong> <code>SMTP Send → Capture Raw → Slack Alert</code> (error‑only path).</p>
<p style="margin-bottom: 2em; line-height: 1.9;">The <strong>Capture Raw</strong> node records the full SMTP transcript, while the <strong>Slack Alert</strong> node notifies only on failure, keeping production noise low.</p>
<div style="margin: 55px 0;">
<hr />
</div>
<h2 style="margin-bottom: 45px; line-height: 1.3;">Conclusion</h2>
<p style="margin-bottom: 2em; line-height: 1.9;">n8n’s SMTP node reports success when the <strong>SMTP transaction</strong> completes, not when the message reaches the inbox. By enabling <strong>Raw Output</strong>, validating <strong>credentials</strong>, inspecting <strong>headers</strong>, and monitoring the <strong>mail queue</strong>, you can pinpoint why an email disappears after a “successful” run. Apply the production checklist, capture the full transcript, and implement error‑aware alerts to keep automated communications reliable in real‑world deployments.</p>

Step by Step Guide to solve n8n SMTP Node Send Failure Error
Who this is for:
Automation engineers and DevOps professionals using n8n to send transactional email via an SMTP server. We cover this in detail in the n8n Node Specific Errors Guide.
Quick Diagnosis
Problem: The SMTP node reports success but no email arrives.
Quick fix:
| Step |
Action |
Result |
| 1 |
Open the node → Credentials → verify SMTP host, port, TLS/SSL settings. |
Correct connection details. |
| 2 |
In Additional Fields enable Raw Output and run the workflow. |
View the server’s response in the execution log. |
| 3 |
If the response is 250 OK but the mail never arrives, check spam/junk and DMARC/SPF alignment for the sender domain. |
Confirms delivery vs. rejection. |
| 4 |
Add a Set node before the SMTP node to output the full email headers and compare them with a known‑working message. |
Detect missing/invalid headers (From, To). |
| 5 |
If the server returns 550 5.1.1 or similar, correct the recipient address or whitelist the sending IP. |
Resolves address‑rejection errors. |
Run the workflow again – the email should now be delivered.
1. Why the SMTP node can appear “successful” while the mail never lands
If you encounter any n8n excel node file corruption resolve them before continuing with the setup.
Even with a Success status, n8n only confirms that the SMTP transaction completed. Delivery depends on several layers:
- Server response codes – n8n logs only the final code (e.g.,
250 OK).
- Recipient validation – some providers accept the message then bounce later.
- Spam‑filtering – DMARC, SPF, DKIM mis‑configurations cause silent drops.
- Network‑level blocks – outbound port 25 may be blocked by the host provider.
Understanding these layers prevents endless “node ran fine but no mail” loops.
2. Step‑by‑Step Diagnostic Workflow
If you encounter any n8n mysql node connection timeout resolve them before continuing with the setup.
2.1 Capture the raw SMTP conversation
- Open the SMTP node → Additional Fields → toggle Raw Output.
- Execute the workflow with a test payload.
- In the Execution Log, expand Raw Output.
Sample transcript – part 1 (handshake & envelope):
EHLO my.n8n.instance
250-mail.example.com
250-PIPELINING
250-8BITMIME
250-STARTTLS
250-AUTH PLAIN LOGIN
250 OK
MAIL FROM:<n8n@mydomain.com>
250 2.1.0 Ok
Sample transcript – part 2 (recipient & data):
RCPT TO:<invalid@example.org>
550 5.1.1 <invalid@example.org>: Recipient address rejected
DATA
354 End data with <CR><LF>.<CR><LF>
...
EEFA note: If you see 250 OK after DATA but the email never arrives, the server may have accepted the message for asynchronous processing and later generated a bounce. Check the server’s mail queue or bounce mailbox.
2.2 Verify credentials & connection security
| Setting |
Typical Values |
Common Pitfalls |
| Host |
smtp.gmail.com, mail.mycompany.com |
Typos, missing sub‑domain (mail.) |
| Port |
465 (SSL) or 587 (STARTTLS) |
Using 25 on cloud providers that block it |
| TLS/SSL |
SSL for 465, STARTTLS for 587 |
Mixing SSL with STARTTLS causes handshake failures |
| Auth Type |
Login, Plain, OAuth2 |
Using OAuth2 with a password‑only account |
EEFA warning: Providers such as Google Workspace require App Passwords or OAuth2 scopes. Supplying a regular password yields 535 5.7.8 Authentication credentials invalid – the node may still report *success* if the error is swallowed by a try‑catch block.
2.3 Inspect email headers generated by n8n
Add a Set node before the SMTP node to expose the headers:
| Field |
Value |
| emailHeaders |
{{ $json[“headers”] || {} }} |
| rawMessage |
{{ $json[“raw”] }} |
Run the workflow and review the output. Typical missing‑header issues:
- Missing
From → 550 5.6.0 Missing From header.
- Invalid
To format → e.g., “john.doe” instead of “john.doe@example.com”.
- Wrong
Content-Type → message treated as plain text when HTML is expected.
2.4 Check server‑side queues & bounce handling
If the raw output ends with 250 OK but the recipient reports non‑delivery:
- SSH into the SMTP server (or ask your admin) and run the appropriate queue command.
- Postfix:
postqueue -p
- Exim:
exim -bp
- Locate the message ID from the n8n log.
- If it’s in a deferred state, note the reason (e.g., DNS lookup failure, greylisting).
EEFA tip: Cloud‑hosted services (Mailgun, SendGrid) expose an **API dashboard** where you can search the message ID and view bounce details.
3. Common Failure Scenarios & Exact Fixes
| Error |
Root Cause |
Fix |
| 550 5.1.1 – Recipient address rejected |
Invalid or non‑existent mailbox |
Verify the To address; add an Email Validation node before SMTP. |
| 421 4.4.2 – Connection timed out |
Outbound port blocked by firewall or provider |
Open port 25/587/465 in the server’s security group; request removal of SMTP throttling on cloud platforms. |
| 535 5.7.8 – Authentication failed |
Wrong credentials or missing App Password |
Regenerate credentials; for Gmail enable 2‑Step Verification and create an App Password. |
| 452 4.3.1 – Insufficient system storage |
Mail queue full on the SMTP server |
Clean old messages or increase disk quota. |
| No error, but email lands in spam |
DMARC/SPF/DKIM mis‑alignment |
Add an SPF record (v=spf1 include:mail.mycompany.com -all), configure DKIM signing, ensure From domain matches the signing domain. |
| 250 OK but no delivery after 24 h |
Remote server silently discarding (blacklist) |
Check if the sending IP appears on an RBL (e.g., Spamhaus); request delisting or switch to a reputable SMTP relay. |
4. Production‑Ready Checklist
If you encounter any n8n wait node timeout resolve them before continuing.
| Steps |
Item |
| ✔ |
Credentials – Verify host, port, TLS/SSL, username, password (or OAuth token). |
| ✔ |
Raw Output – Enable in node → confirm server response codes. |
| ✔ |
Headers – Ensure From, To, Subject, Content-Type are present and correctly formatted. |
| ✔ |
Recipient Validation – Use an Email Validation node or regex before sending. |
| ✔ |
Spam Checks – Confirm SPF/DKIM/DMARC for the sender domain. |
| ✔ |
Network – Outbound SMTP ports open on the n8n host; no provider throttling. |
| ✔ |
Queue Monitoring – Periodically inspect the SMTP server’s queue for deferred messages. |
| ✔ |
Logging – Store the raw SMTP transcript in a Log node for audit trails. |
| ✔ |
Error Handling – Wrap the SMTP node in a Try/Catch workflow; on error, send a Slack alert with the raw output. |
5. Example: Minimal n8n workflow that guarantees visibility
5.1 SMTP node (raw output enabled)
{
"name": "SMTP Send",
"type": "n8n-nodes-base.smtp",
"typeVersion": 1,
"position": [400, 300],
"parameters": {
"email": "test@example.com",
"subject": "n8n SMTP test",
"text": "Hello from n8n!",
"options": { "rawOutput": true }
},
"credentials": { "smtp": "MySMTP" }
}
5.2 Capture Raw node (stores transcript)
{
"name": "Capture Raw",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [600, 300],
"parameters": {
"functionCode": "return [{ json: { raw: $node[\"SMTP Send\"].json.rawOutput } }];"
}
}
5.3 Slack alert node (fires only on error)
{
"name": "Slack Alert",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"position": [800, 300],
"parameters": {
"text": "SMTP node failed – see logs",
"channel": "#alerts"
},
"conditions": { "error": true }
}
Workflow connections: SMTP Send → Capture Raw → Slack Alert (error‑only path).
The Capture Raw node records the full SMTP transcript, while the Slack Alert node notifies only on failure, keeping production noise low.
Conclusion
n8n’s SMTP node reports success when the SMTP transaction completes, not when the message reaches the inbox. By enabling Raw Output, validating credentials, inspecting headers, and monitoring the mail queue, you can pinpoint why an email disappears after a “successful” run. Apply the production checklist, capture the full transcript, and implement error‑aware alerts to keep automated communications reliable in real‑world deployments.