New guide: how to warm up a dedicated IP without hurting your reputation. Read now →
Log in
MigoSMTP
SMTP and APIUpdated 17 Oct 2026

Why Won't My Emails Send? How to Find the Cause and Fix It Step by Step

When an email will not send, the cause is usually at one of three stages: your device or app, your sending server, or the recipient. This guide shows how to find which one, how to read the error, and how to fix the common causes, including wrong settings, blocked ports, failed authentication, full mailboxes, size limits, spam rejections and account limits.

KW
Written by Kenji Watanabe
HTML Email Developer
Reviewed by Aarav Mehta
  • Published16 Oct 2026
  • Read time6 min
  • Length1,307 words
Share this guide

When an email does not send, the cause is almost always one of a short list: the message never left your device or application, the server refused it, the recipient's server rejected it, or it was accepted and then filtered or delayed. The fastest fix is to work out which stage failed. This guide gives a step-by-step way to do that, for personal email in a mail app and for applications that send through SMTP or an API, with the error messages and fixes for each case.

Stage 1the message never left your device or app
Stage 2your sending server refused it
Stage 3the recipient's server rejected it, or filtered it after accepting

Step 1: Check whether the message left at all

Open the outbox or sent folder. If the message is stuck in the outbox, the problem is between your app and your sending server: no internet, wrong SMTP settings, a blocked port, or a login that failed. If it is in the sent folder, it left your device, and the problem is further along. For applications, check your own logs for the response from the SMTP server or the API, since that response is the most useful clue you have.

Step 2: Read the error or the bounce message

Most failures come with a message. A bounce message from a mail system usually contains a code and a reason. The first digit tells you what kind of failure it is: a code that starts with 4 is a temporary failure and the sender will retry, and a code that starts with 5 is permanent. Our guides to reading a bounce code, SMTP bounce codes and SMTP error codes explain the codes in detail.

Symptom or messageLikely causeWhat to do
Stuck in outbox, cannot connectNo internet, wrong server or port, or a firewall blocks the portCheck the connection, the server name and the port. Try 587 with STARTTLS. See SMTP timeout and TLS troubleshooting
Authentication failed (535)Wrong user name or password, or an app password is neededRe-enter the credentials. For Gmail, see Gmail SMTP settings
Mailbox full (552 or 4.2.2)The recipient's mailbox is over its quotaAsk the recipient to free space, or try again later
User unknown or no such user (550 5.1.1)The address does not exist, usually a typoCheck the spelling and resend. Stop sending to the address if it is a list contact
Message too large (552 5.3.4)The attachment or the message exceeds a size limitReduce the size or share a link. See email size limits
Rejected as spam or blocked (550 5.7.x)Failed authentication, a blocklisted IP or a poor reputationCheck SPF, DKIM, DMARC and blocklists. See the spam troubleshooting checklist
Deferred or temporarily rejected (4xx)Rate limiting, greylisting or a busy serverWait. The sending server retries on its own. See queued, deferred and greylisted mail

Step 3: Check your sending account

Accounts can be limited or suspended. Your provider may have paused sending after a spike in complaints, a security alert, or because you reached a daily limit. Log in to the provider's dashboard and look for notices. A personal mailbox may need you to confirm your identity after a sign-in from a new place. If you suspect that someone else has access to the account, change the password and read account security and compromise response.

Step 4: Check authentication and DNS

If you send from your own domain, mailbox providers expect SPF, DKIM and DMARC to pass. A recent DNS change, a missing record or a record that exceeds the SPF lookup limit can cause sudden rejections. Use our SPF, DKIM and DMARC checker, then see authenticating your sending domain and the SPF lookup limit.

Step 5: Check the recipient side

If the message shows as sent and there is no bounce, it may have been accepted and then filtered. Ask the recipient to check the spam, junk and any quarantine folder, and to search for your address. Look at the message headers, if you have them, to see what authentication results the receiving server recorded.

Email not sending from an application

For a website, plugin or application, the checks are the same, with a few that apply to code. Confirm the SMTP host, port and security mode, and that the credentials are the ones for the sending service, not for a mailbox. Make sure the server allows outbound connections on your port, since some hosts block them. Log the full response from the server, not just a pass or fail. Check that the From address uses a domain you have authenticated. For WordPress sites, see the WordPress SMTP setup guide, and for Node.js see the Nodemailer guide. If you hit rate limits, add retries with back-off, as described in rate limits and back-off.

Your sending service's logs show what happened to each message after your application handed it over. Use them to follow a single message through its life, as in tracing a message through logs and events.

Do not keep retrying a permanent error. A 5xx rejection will not succeed the next time. Fix the cause, or stop sending to that address. Repeated sending to addresses that do not exist harms your reputation.

A quick checklist

  1. Is the message in the outbox, or did it leave?
  2. What does the error or bounce say, and does it start with 4 or 5?
  3. Are the server, port, security mode and credentials correct?
  4. Is the account active, within its limits and not flagged?
  5. Do SPF, DKIM and DMARC pass for the From domain?
  6. Is the recipient address correct, and is their mailbox able to receive?
  7. Is the message very large, or does it contain content that filters dislike?

Common causes for personal email in Gmail, Outlook and similar apps

For a mailbox you use by hand, a handful of causes explain most failures. The attachment may be over the size limit. The recipient's address may contain a typo, or may have been saved with a trailing space. The account may be asking you to sign in again, or to approve a new device. Your storage may be full, since many services refuse to send or receive when the account is over quota. An add-in, a rule or a security product may be holding messages back. Try sending a short plain-text message to yourself, and then to another address on a different provider. If both work, the problem lies with the original message or its recipient. If neither works, it is your account, your settings or your connection.

Test with a plain message before changing anything

It is tempting to change several settings at once. Resist that. Send one very small text message with no attachment and no images. If it goes through, add back one element at a time, such as the attachment or the link, until it fails. That shows you exactly which element caused the problem. For an application, do the same with the simplest possible message from a command line or a small script, so that you remove your own code from the picture. When the simple message works from the script and not from the application, the fault is in the application's settings or code and not in the sending account.

When to ask for help

If you still cannot find the cause, collect the facts that a support team needs: the exact error text, the time of the failure, the sending address and the recipient address, and the message headers if the message was delivered somewhere. With those facts, a provider can usually find the cause in a few minutes, where a vague report such as "email is not working" can take several rounds of questions.

Want clear delivery logs for every message? See what happened to each email you send, from the first connection to the final delivery status, and fix problems from the evidence instead of guesswork.

See the SMTP relay

References and further reading

Frequently asked questions

Why is my email stuck in the outbox?

It usually means the app cannot reach the sending server. Common causes are no internet, a wrong server name or port, a blocked port, or a failed login. Check the settings and try port 587 with STARTTLS.

What does a 5xx error mean?

A code starting with 5 is a permanent failure, such as an address that does not exist or a policy block. Retrying will not help. Fix the cause or stop sending to that address. A code starting with 4 is temporary and is retried.

Why does my email say sent but never arrive?

The receiving server may have accepted it and then filtered it as spam or placed it in quarantine, or it may be delayed. Ask the recipient to check spam and junk folders, and read the message headers.

Why are my emails going to spam or being rejected?

Typical causes are failed SPF, DKIM or DMARC, a blocklisted IP, content that filters dislike or a poor sender reputation. Check authentication and blocklists first.

How do I find out why an email from my application failed?

Log the full SMTP or API response and use your sending service's message logs to follow the message. The response code and text name the stage and the reason.

Topics#email not sending#troubleshooting#smtp errors#bounce codes#outbox#authentication
Was this guide helpful?Your answer helps us improve our documentation.

Start sending in minutes.

Create an account, add your domain and send your first email.

Get started Talk to sales