Connection settings
- Host
- smtp.zoho.com
- Port
- 587
- Security
- STARTTLS
Zoho Mail provides SMTP submission for personal, family, and business mailboxes. Use this Zoho SMTP test online guide to verify smtp.zoho.com (or your regional host), port, TLS mode, and credentials before configuring WordPress, a CRM, or a custom app.
Recommended settings
| Setting | Value |
|---|---|
| Host | smtp.zoho.com (US/global) or your regional host |
| Port | 587 (STARTTLS) or 465 (implicit TLS) |
| Username | Your full Zoho email address, e.g. you@yourdomain.com |
| Password | App-specific password if 2FA is on, otherwise your Zoho password |
| Auth method | Auto, PLAIN, or LOGIN |
| From address | The authenticated mailbox or an allowed alias |
If you want a refresher on what the test actually does before you start, see what an SMTP test is.
Regional SMTP hosts and how to pick the right one
Zoho hosts mailboxes in several data regions, and each region has its own SMTP endpoint. Pick the host that matches where your mailbox is hosted:
| Region | SMTP host |
|---|---|
| US / global | smtp.zoho.com |
| Europe | smtp.zoho.eu |
| India | smtp.zoho.in |
| Australia | smtp.zoho.com.au |
| Japan | smtp.zoho.jp |
The most reliable ways to confirm your region:
- Check the webmail URL you use. If you sign in at
mail.zoho.eu, your mailbox is in the EU and your SMTP host issmtp.zoho.eu. The same pattern applies to.in,.com.au, and.jp. - Check the admin console. For organization mailboxes, the Zoho Mail Admin Console shows the data region for the account. Use the matching host.
- Ask whoever set up the account. Region is fixed at signup (or migration) and cannot be inferred from your domain alone. A
yourdomain.commailbox can just as easily live in the EU or India data center as in the US.
Using the wrong regional host is a common failure mode. The connection often succeeds, but authentication fails with a generic 535 error that looks exactly like a bad password. If you are confident the credentials are correct and 2FA is handled, the region mismatch is the first thing to check. The test transcript will show a successful TLS handshake followed by a failed AUTH, which points at host or credentials rather than networking.
Username: always the full email address
Zoho expects the SMTP username to be the complete email address, not a bare local part:
- Correct:
you@yourdomain.com - Correct:
you@zohomail.com(personal accounts) - Wrong:
you
This trips up people migrating from servers where a short username worked. If AUTH fails and the password is definitely right, print the username field from your saved profile and check for truncation, a missing domain, or a stray space.
App-specific passwords (required with 2FA)
If multi-factor authentication is enabled on your Zoho account, your normal login password will not work for SMTP. Zoho rejects it with an authentication error, and you need an app-specific password instead:
- Sign in to your Zoho account at
accounts.zoho.com(or your regional equivalent, e.g.accounts.zoho.eu) and open Security → App Passwords. - Generate a new password, giving it a name such as
smtp-testor the name of the client you are configuring. - Copy the generated password immediately. Zoho shows it only once.
- Use your full email address as the SMTP username and the app password as the SMTP password.
Without 2FA, your regular Zoho password may work, but app passwords are still the better choice for third-party apps. You can revoke one client's password without resetting your main login, and you can delete the test password when you are done.
Testing with SMTP Tester
- Host:
smtp.zoho.com(or your regional host), port 587, security STARTTLS. - Username: full Zoho email address.
- Password: account password or app-specific password.
- From: the same mailbox (or an allowed send-as alias).
- To: any recipient for a delivery test.
- Click Run and confirm
235after AUTH in the transcript.
Enable handshake-only first if you only want to verify TLS and credentials without sending mail. It runs connect, TLS, EHLO, AUTH, and a QUIT, which is enough to prove the credentials and region are correct.
What each stage of the transcript means
- Connect + TLS. With port 587 you should see the server greeting followed by a
220response once STARTTLS is negotiated. On port 465 the TLS handshake happens before the greeting. - EHLO →
250. The server lists its extensions (AUTH mechanisms, SIZE limits, pipelining). If EHLO fails, you are pointed at the wrong port or security mode. - AUTH →
235. Credentials accepted. A535here means password, username, or region problems (see the error section below). - MAIL FROM / RCPT TO →
250. Zoho accepted the sender and recipient. A550here usually means the From address does not match the authenticated mailbox or an allowed alias. - DATA →
354then250. The message body was accepted for delivery. This is the last handshake stage; actual delivery is asynchronous.
Sending limits by Zoho Mail plan
Zoho applies daily sending limits that vary by plan, with per-message recipient caps on top. The Free plan is the most restricted, paid plans scale up with tier, and organization plans depend on the specific Workplace bundle. Exact numbers change as Zoho revises its plans, so treat any figure quoted in a blog post or forum thread (including this one) as out of date until you confirm it in Zoho's own documentation or your admin console.
What stays true regardless of plan:
- Exceeding the daily limit typically produces a rejection or a temporary block on outbound mail, not a silent failure.
- Free-plan accounts have historically had restrictions on or around SMTP and IMAP access, so if your test fails at AUTH on a Free account, verify that your plan actually permits external SMTP clients.
- Lower daily sending limits mean Zoho Mail is best suited to normal mailbox traffic. For bulk or application-generated email, use a transactional service instead (see ZeptoMail below).
Zoho Mail SMTP vs Zoho Transactional Email (ZeptoMail)
Zoho operates several email products, and they are not interchangeable:
- Zoho Mail SMTP is mailbox submission. You authenticate with an email address and an (app-specific) password, and you send from your own mailbox, subject to the mailbox plan's sending limits. Right choice for personal replies, notifications from a small app, or WordPress on a low-traffic site.
- ZeptoMail is Zoho's transactional email service. You authenticate with a send-mail token against a different SMTP endpoint, you must add and verify your sending domain first, and your messages must be transactional in nature. ZeptoMail explicitly does not allow marketing or bulk email.
Do not paste a ZeptoMail token into Zoho Mail SMTP settings or vice versa. If you are evaluating transactional providers in general, the SendGrid SMTP test, Mailgun SMTP test, and Amazon SES SMTP test guides cover the same credential-and-domain verification pattern.
Zoho Mail vs Zoho Workplace / organization mail
- Personal / family Zoho Mail uses the hosts above with your
@zohomail.comor custom-domain mailbox. - Organization / Workplace mail may use
smtppro.zoho.comfor some tenants. Check the Zoho Admin Console → Mail → Mail Accounts → SMTP configuration for the exact hostname your org publishes.
If smtp.zoho.com fails with connection errors for a business tenant, try the hostname listed in your admin documentation.
Testing with Node.js and nodemailer
Once SMTP Tester confirms the credentials work, here is the equivalent nodemailer configuration for your app:
const nodemailer = require("nodemailer");
const transporter = nodemailer.createTransport({
host: "smtp.zoho.com", // or smtp.zoho.eu / .in / .com.au / .jp
port: 587,
secure: false, // STARTTLS on 587; use true only for 465
auth: {
user: "you@yourdomain.com", // full email address
pass: "your-app-specific-password",
},
});
transporter
.verify()
.then(() => console.log("SMTP ready"))
.catch((err) => console.error("SMTP failed:", err.message));
The verify() call maps to the same handshake SMTP Tester performs, so a passing test should mean a passing verify(). If your app runs on port 465, set secure: true; on 587, keep secure: false so STARTTLS is used. For a deeper look at why this distinction exists, see port 587 vs 465.
Common errors
535 authentication failed
- 2FA enabled but normal account password used: create an app-specific password.
- Username is not the full email address.
- Wrong regional host for the mailbox.
- Account locked or password expired: sign in to webmail first.
550 sender rejected
- From address does not match the authenticated user or an allowed alias.
- Custom domain not verified in Zoho Mail admin.
- Outbound sending disabled for the mailbox.
Connection timeout
- Outbound 587 blocked: try 465 with TLS (implicit).
- Firewall blocking Zoho SMTP hosts: allow
smtp.zoho.comor your regional host.
TLS errors
- Port 587 requires STARTTLS, not implicit TLS.
- Port 465 requires TLS on connect.
- Self-signed or mismatched certificates are uncommon on Zoho's public SMTP; if you see TLS errors, double-check port and security mode first.
Privacy note
- SMTP Tester redacts passwords and AUTH payloads from the live transcript.
- Use an app-specific password you can revoke after testing instead of your primary Zoho login when possible.
Frequently asked questions
I get "authentication failed" but my password is correct. Why?
Most often one of three things: 2FA is enabled and Zoho requires an app-specific password, the username is not the full email address, or you are pointed at the wrong regional host (e.g. smtp.zoho.com for a mailbox hosted on smtp.zoho.eu). Test all three before assuming a lockout.
How do I know which region my Zoho mailbox is in?
The URL you use for webmail is the easiest signal: mail.zoho.eu means EU, mail.zoho.in means India, and so on. For organization accounts, the Admin Console shows the data region. There is no way to detect it from your domain alone.
Can I use my normal Zoho password for SMTP?
Only if 2FA is disabled on the account. With 2FA on, Zoho rejects the login password for SMTP and IMAP clients and requires an app-specific password generated from the account Security page.
Does the Free plan of Zoho Mail allow SMTP?
The Free plan has the tightest restrictions of any Zoho Mail tier, historically including limits around external SMTP and IMAP access. If your test fails at AUTH on a Free account, confirm in Zoho's current plan documentation that SMTP client access is included before debugging further.
Should I use Zoho Mail SMTP or ZeptoMail for my application?
Use Zoho Mail SMTP when you send as a real mailbox at low volume (password resets from a small site, replies, internal notifications). Use ZeptoMail when an application generates higher-volume transactional email such as receipts and account confirmations, since it offers dedicated sending infrastructure and higher throughput rather than mailbox-level limits.
Zoho Mail rejected my message with a sending limit error. What now?
You have hit the daily sending limit for your plan, or a per-message recipient cap. Wait for the limit window to reset, reduce recipients per message, or move high-volume sending to a transactional provider. Zoho Mail is designed for mailbox-level use, not bulk delivery.
Where to go next
- Gmail SMTP test tool: similar app-password flow
- Office 365 SMTP test: another hosted mailbox provider
- SMTP authentication checker: diagnose 535 errors