M
MeshWorld.
Zoho SMTP Email HowTo Developer Tools 8 min read

How to Use Zoho Mail SMTP Server for Sending Email

Rachel
By Rachel
| Updated: Mar 22, 2026

Zoho Mail SMTP is the outgoing mail server for Zoho Mail accounts — both free and paid. It lets you send email from any app, script, or email client that supports SMTP configuration. The server address is smtp.zoho.com for global accounts and smtp.zoho.in for Indian region accounts. It uses port 587 with STARTTLS (recommended) or port 465 with SSL. Authentication requires your Zoho email address and an app-specific password — not your regular Zoho login password — if 2FA is enabled on your account. This guide covers exact settings, how to generate an app-specific password, and code examples for PHP, Python, and Node.js.

:::note[TL;DR]

  • Global server: smtp.zoho.com | India region: smtp.zoho.in
  • Port 587 (STARTTLS) or 465 (SSL/TLS)
  • Authentication: your Zoho email + an app-specific password
  • Free plan allows SMTP access (with limits — see below)
  • Works with custom domains on paid plans :::

What are the Zoho Mail SMTP settings?

Full settings table for both global and India regions:

Global accounts (zoho.com):

SettingValue
SMTP Serversmtp.zoho.com
Port (STARTTLS)587
Port (SSL/TLS)465
EncryptionSTARTTLS (preferred)
AuthenticationRequired
UsernameYour full Zoho email address
PasswordApp-specific password

India region accounts (zoho.in):

SettingValue
SMTP Serversmtp.zoho.in
Port (STARTTLS)587
Port (SSL/TLS)465
EncryptionSTARTTLS (preferred)
AuthenticationRequired
UsernameYour full Zoho email address
PasswordApp-specific password

If you signed up at zoho.in or your Zoho account is hosted on the India data center, use smtp.zoho.in. If you’re not sure which region you’re on, try smtp.zoho.com first — Zoho will typically redirect or refuse the connection if you’re on the wrong data center.

:::warning Using smtp.zoho.com for a Zoho.in account (or vice versa) will result in authentication errors even with correct credentials. When in doubt, check your Zoho account settings under Mail Settings > POP/IMAP — the listed IMAP server domain (imap.zoho.com vs imap.zoho.in) confirms your region. :::

What are the Zoho SMTP limits on free vs paid plans?

Zoho’s free plan allows SMTP access, but the daily limits are tight:

PlanOutgoing Email Limit
Zoho Mail Free50 emails/day
Zoho Mail Lite / Standard500 emails/day per user
Zoho Mail Professional1,000 emails/day per user
Zoho WorkDrive EnterpriseCustom / higher

The free plan’s 50-email/day cap is only useful for personal use or very low-volume testing. If you’re sending transactional emails from an app — password resets, notifications, contact form submissions — upgrade to at least the Lite plan or use a dedicated transactional service.

How do I generate an app-specific password in Zoho?

If you have 2FA (Two-Factor Authentication) enabled on your Zoho account, you can’t use your regular Zoho password for SMTP. You need an app-specific password.

  1. Log in to your Zoho account at accounts.zoho.com
  2. Go to Security in the left sidebar
  3. Under “App Passwords”, click Generate New Password
  4. Give it a name (e.g., “PHPMailer” or “Contact Form”) and click Generate
  5. Copy the password — it won’t be shown again

Use this as the Password in your SMTP configuration. Your regular Zoho login password will be rejected if 2FA is active.

The Scenario: You’ve set up a contact form on a small business site using Zoho Mail. Works fine in development. You deploy it, and the first few inquiry emails from real customers never arrive. The server logs say “535 Invalid username or password.” You check the credentials three times — they’re correct. Then you remember you turned on 2FA last week. App-specific password, five minutes, problem solved.

How do I configure Zoho SMTP in an email client?

For Mozilla Thunderbird or any standard client:

  • Outgoing Server (SMTP) → Add new server
  • Description: Zoho SMTP
  • Server Name: smtp.zoho.com (or smtp.zoho.in)
  • Port: 587
  • Connection Security: STARTTLS
  • Authentication Method: Normal password
  • Username: your full Zoho email (e.g. you@yourdomain.com)
  • Password: app-specific password (or regular password if 2FA is off)

How do I send email via Zoho SMTP in code?

PHP with PHPMailer

Install PHPMailer via Composer:

composer require phpmailer/phpmailer

PHPMailer configuration for Zoho SMTP:

<?php
use PHPMailer\PHPMailer\PHPMailer;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

$mail->isSMTP();
$mail->Host       = 'smtp.zoho.com';          // Use smtp.zoho.in for India region
$mail->SMTPAuth   = true;
$mail->Username   = 'you@yourdomain.com';     // Your Zoho email address
$mail->Password   = 'your-app-specific-password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 587;

$mail->setFrom('you@yourdomain.com', 'Your Name');
$mail->addAddress('recipient@example.com');
$mail->Subject = 'Test via Zoho SMTP';
$mail->Body    = 'Sent through Zoho Mail SMTP with PHPMailer.';

$mail->send();
echo 'Message sent.';

The setFrom address must match your authenticated Zoho account. Using a different From address will cause a relay denial — Zoho doesn’t allow sending as a different identity through basic SMTP auth.

Python with smtplib

import smtplib
from email.mime.text import MIMEText

smtp_server = "smtp.zoho.com"   # Use smtp.zoho.in for India region
port = 587
sender = "you@yourdomain.com"
password = "your-app-specific-password"

msg = MIMEText("Sent through Zoho Mail SMTP.")
msg["Subject"] = "Test via Zoho SMTP"
msg["From"] = sender
msg["To"] = "recipient@example.com"

with smtplib.SMTP(smtp_server, port) as server:
    server.ehlo()
    server.starttls()      # Upgrade to TLS before authentication
    server.login(sender, password)
    server.sendmail(sender, "recipient@example.com", msg.as_string())

print("Email sent.")

Node.js with Nodemailer

npm install nodemailer
const nodemailer = require("nodemailer");

const transporter = nodemailer.createTransport({
  host: "smtp.zoho.com",   // Use smtp.zoho.in for India region
  port: 587,
  secure: false,           // false = STARTTLS on port 587
  auth: {
    user: "you@yourdomain.com",
    pass: "your-app-specific-password",
  },
});

async function sendMail() {
  await transporter.sendMail({
    from: '"Your Name" <you@yourdomain.com>',
    to: "recipient@example.com",
    subject: "Test via Zoho SMTP",
    text: "Sent through Zoho Mail SMTP with Nodemailer.",
  });
  console.log("Email sent.");
}

sendMail().catch(console.error);

Does Zoho SMTP work with a custom domain?

Yes — this is one of Zoho Mail’s strongest selling points over Gmail SMTP. With a Zoho paid plan, you can host your custom domain (you@yourcompany.com) on Zoho and send through SMTP using that address.

The SMTP settings are identical to above. The Username and From address use your custom domain email instead of a @zoho.com address.

For the free plan, custom domain SMTP is available but limited. You can receive email on a custom domain for free, but outgoing SMTP is capped at 50 emails/day.

:::tip If you’re building a client site with a contact form and they have a custom domain on Zoho, their Zoho email + app-specific password is all you need. No relay, no third-party API keys. For small business sites with low form submission volume, this is often the simplest setup. :::

Common Zoho SMTP errors and how to fix them

535 Invalid username or password Either 2FA is on and you’re using your regular password (generate an app-specific password), or you’re using the wrong server region (smtp.zoho.com vs smtp.zoho.in). Verify your region under Zoho Mail Settings > POP/IMAP.

Connection refused / timeout on port 587 SMTP may be disabled for your Zoho account. Log in to Zoho Mail → Settings → Mail Accounts → POP/IMAP/SMTP, and make sure SMTP access is enabled.

550 Relay not permitted The From address in your email doesn’t match the authenticated Zoho account. They must be identical.

Authentication failure after switching to TFA You’re still using your old regular password. Generate an app-specific password after enabling 2FA — the regular password stops working for SMTP immediately.

To compare SMTP options across providers, see Gmail SMTP and Outlook SMTP — each has different limits and auth requirements.


FAQ

Does Zoho free plan include SMTP access?

Yes, but limited to 50 outgoing emails per day. It’s enough for personal use and low-traffic contact forms. Paid plans start at 500 emails/day per user.

Can I use Zoho SMTP to send from a Gmail or Outlook address?

No. Zoho SMTP only allows sending from the authenticated Zoho account’s email address. If you want to send from you@gmail.com, use Gmail SMTP instead.

Is zoho.com or zoho.in SMTP faster for Indian users?

smtp.zoho.in routes through Zoho’s India data center, so yes — it will generally be lower latency for connections originating in India. More importantly, if your account is hosted on the India data center, smtp.zoho.in is the correct server and smtp.zoho.com will fail authentication.

Can I send bulk marketing email through Zoho SMTP?

You shouldn’t. Zoho SMTP is for transactional email — notifications, contact form submissions, password resets. Bulk marketing campaigns should go through Zoho Campaigns (Zoho’s email marketing tool) or a dedicated service. Sending marketing email through SMTP risks getting your account flagged.

What port should I use for Zoho SMTP — 587 or 465?

Port 587 with STARTTLS is the current recommendation and works in all modern environments. Port 465 with SSL also works. If one doesn’t connect, try the other — the issue is usually a firewall blocking one of the ports, not a Zoho problem.