Zoho Mail SMTP Settings (2026)
Complete guide to configure Zoho Mail SMTP for personal and business accounts. Learn about regional servers, App Passwords, and SMTP relay for high-volume sending.
Zoho SMTP Quick Reference
| SMTP Server (Personal) | smtp.zoho.com |
| SMTP Server (Business) | smtppro.zoho.com |
| Port (SSL/TLS) |
465
(SSL - Recommended)
|
| Port (STARTTLS) |
587
(TLS)
|
| Username | Your full Zoho email (example@zohomail.com or you@yourdomain.com) |
| Password | Account password (or App Password if 2FA enabled) |
| Authentication | LOGIN / PLAIN |
account_circle Zoho Account Types
person Zoho Mail (Personal)
Free personal email accounts (@zohomail.com)
smtp.zoho.com
business Zoho Workplace (Business) Recommended
Business email with custom domains
smtppro.zoho.com
How to identify your account type: If your email ends with @zohomail.com, you have a personal account. If you use a custom domain (you@yourdomain.com), you have a Zoho Workplace (business) account.
public Regional SMTP Servers
Important: Use the correct regional server
Zoho has data centers in different regions. You MUST use the SMTP server matching your account's region. Using the wrong server will result in authentication errors.
| Region | Personal Account | Business Account | Login URL |
|---|---|---|---|
| ๐บ๐ธ United States | smtp.zoho.com |
smtppro.zoho.com |
mail.zoho.com |
| ๐ช๐บ Europe (EU) | smtp.zoho.eu |
smtppro.zoho.eu |
mail.zoho.eu |
| ๐ฎ๐ณ India | smtp.zoho.in |
smtppro.zoho.in |
mail.zoho.in |
| ๐ฆ๐บ Australia | smtp.zoho.com.au |
smtppro.zoho.com.au |
mail.zoho.com.au |
| ๐ฏ๐ต Japan | smtp.zoho.jp |
smtppro.zoho.jp |
mail.zoho.jp |
| ๐จ๐ณ China | smtp.zoho.com.cn |
smtppro.zoho.com.cn |
mail.zoho.com.cn |
| ๐ธ๐ฆ Saudi Arabia | smtp.zoho.sa |
smtppro.zoho.sa |
mail.zoho.sa |
| ๐จ๐ฆ Canada | smtp.zoho.ca |
smtppro.zoho.ca |
mail.zoho.ca |
lightbulb Tip: Check which URL you use to log in to Zoho Mail to determine your region. For example, if you log in at mail.zoho.eu, use smtp.zoho.eu.
key App-Specific Passwords (2FA Users)
If you have Two-Factor Authentication enabled on your Zoho account, you'll need to generate an App-Specific Password for SMTP:
Go to Zoho Accounts
Sign in and navigate to Security settings:
https://accounts.zoho.com/home#security/security_pwd open_in_newClick 'Application-Specific Passwords'
Find this option under the Security section.
Generate new password
Enter a name for the application (e.g., 'SMTP Client' or 'My App').
Copy and save the password
Zoho will show a 12-character password. Copy it immediately as it won't be shown again. Use this password instead of your account password for SMTP authentication.
info If you don't have 2FA enabled, you can use your regular Zoho account password for SMTP authentication. However, we recommend enabling 2FA and using App-Specific Passwords for better security.
toggle_on Enable SMTP Access
SMTP access may need to be enabled in your Zoho Mail settings:
Open Zoho Mail Settings
Click the gear icon in Zoho Mail and go to 'Mail Accounts'.
Find IMAP/POP settings
Look for 'IMAP Access' or 'Email Forwarding and POP/IMAP'.
Enable IMAP Access
Toggle IMAP access ON. This also enables SMTP access for the account.
code Code Examples
# Python - Using smtplib (standard library)
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Zoho SMTP Configuration
# Use the correct regional server for your account!
SMTP_HOST = "smtp.zoho.com" # Personal US account
# SMTP_HOST = "smtppro.zoho.com" # Business US account
# SMTP_HOST = "smtp.zoho.eu" # EU region
# SMTP_HOST = "smtp.zoho.in" # India region
SMTP_PORT = 465 # SSL port
ZOHO_EMAIL = "your-email@zohomail.com"
ZOHO_PASSWORD = "your-password-or-app-password"
def send_email(to_email, subject, body):
# Create message
msg = MIMEMultipart()
msg['From'] = ZOHO_EMAIL
msg['To'] = to_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
# Connect and send using SSL
with smtplib.SMTP_SSL(SMTP_HOST, SMTP_PORT) as server:
server.login(ZOHO_EMAIL, ZOHO_PASSWORD)
server.send_message(msg)
print("Email sent successfully!")
# Alternative: Using STARTTLS (port 587)
def send_email_tls(to_email, subject, body):
msg = MIMEMultipart()
msg['From'] = ZOHO_EMAIL
msg['To'] = to_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
with smtplib.SMTP(SMTP_HOST, 587) as server:
server.starttls()
server.login(ZOHO_EMAIL, ZOHO_PASSWORD)
server.send_message(msg)
# Usage
send_email(
"recipient@example.com",
"Hello from Zoho!",
"This email was sent via Zoho Mail SMTP."
)
// PHP - Using PHPMailer
// Install: composer require phpmailer/phpmailer
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// Server settings
$mail->isSMTP();
$mail->Host = 'smtp.zoho.com'; // Use correct regional server
$mail->SMTPAuth = true;
$mail->Username = 'your-email@zohomail.com';
$mail->Password = 'your-password-or-app-password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
// For Business accounts:
// $mail->Host = 'smtppro.zoho.com';
// Recipients
$mail->setFrom('your-email@zohomail.com', 'Your Name');
$mail->addAddress('recipient@example.com');
// Content
$mail->isHTML(true);
$mail->Subject = 'Hello from Zoho!';
$mail->Body = 'This is a <b>test email</b> sent via Zoho SMTP.';
$mail->AltBody = 'This is a test email sent via Zoho SMTP.';
$mail->send();
echo 'Email sent successfully!';
} catch (Exception $e) {
echo "Failed to send: {$mail->ErrorInfo}";
}
// Node.js - Using Nodemailer
// Install: npm install nodemailer
const nodemailer = require('nodemailer');
// Select the correct regional server for your account
const ZOHO_SERVERS = {
us: 'smtp.zoho.com', // Personal US
us_pro: 'smtppro.zoho.com', // Business US
eu: 'smtp.zoho.eu', // Europe
eu_pro: 'smtppro.zoho.eu', // Business Europe
in: 'smtp.zoho.in', // India
au: 'smtp.zoho.com.au', // Australia
};
// Create transporter with Zoho SMTP
const transporter = nodemailer.createTransport({
host: ZOHO_SERVERS.us, // Change to your region
port: 465,
secure: true,
auth: {
user: 'your-email@zohomail.com',
pass: 'your-password-or-app-password'
}
});
// Send email
async function sendEmail() {
try {
const info = await transporter.sendMail({
from: '"Your Name" <your-email@zohomail.com>',
to: 'recipient@example.com',
subject: 'Hello from Zoho!',
text: 'This email was sent via Zoho SMTP.',
html: '<p>This email was sent via <b>Zoho SMTP</b>.</p>'
});
console.log('Email sent:', info.messageId);
} catch (error) {
console.error('Error sending email:', error);
}
}
sendEmail();
# Ruby - Using Mail gem
# Install: gem install mail
require 'mail'
# Configure Zoho SMTP
Mail.defaults do
delivery_method :smtp, {
address: 'smtp.zoho.com', # Use correct regional server
port: 465,
user_name: 'your-email@zohomail.com',
password: 'your-password-or-app-password',
authentication: :login,
ssl: true,
tls: true,
enable_starttls_auto: true
}
end
# Create and send email
mail = Mail.new do
from 'your-email@zohomail.com'
to 'recipient@example.com'
subject 'Hello from Zoho!'
body 'This email was sent via Zoho Mail SMTP.'
end
mail.deliver!
puts "Email sent successfully!"
// Go - Using net/smtp and crypto/tls
package main
import (
"crypto/tls"
"fmt"
"net/smtp"
"strings"
)
func main() {
// Zoho SMTP Configuration - use correct regional server!
smtpHost := "smtp.zoho.com" // Personal US
// smtpHost := "smtppro.zoho.com" // Business US
// smtpHost := "smtp.zoho.eu" // Europe
smtpPort := "465"
zohoEmail := "your-email@zohomail.com"
zohoPassword := "your-password-or-app-password"
// Email content
to := []string{"recipient@example.com"}
subject := "Hello from Zoho!"
body := "This email was sent via Zoho SMTP using Go."
// Build message
message := strings.NewReader(
"From: " + zohoEmail + "\r\n" +
"To: " + strings.Join(to, ",") + "\r\n" +
"Subject: " + subject + "\r\n" +
"MIME-Version: 1.0\r\n" +
"Content-Type: text/plain; charset=\"utf-8\"\r\n" +
"\r\n" + body,
)
// TLS config
tlsConfig := &tls.Config{ServerName: smtpHost}
// Connect with SSL
conn, err := tls.Dial("tcp", smtpHost+":"+smtpPort, tlsConfig)
if err != nil {
panic(err)
}
client, err := smtp.NewClient(conn, smtpHost)
if err != nil {
panic(err)
}
defer client.Close()
// Authenticate
auth := smtp.PlainAuth("", zohoEmail, zohoPassword, smtpHost)
if err = client.Auth(auth); err != nil {
panic(err)
}
// Send email
if err = client.Mail(zohoEmail); err != nil {
panic(err)
}
for _, addr := range to {
if err = client.Rcpt(addr); err != nil {
panic(err)
}
}
w, err := client.Data()
if err != nil {
panic(err)
}
_, err = message.WriteTo(w)
if err != nil {
panic(err)
}
w.Close()
client.Quit()
fmt.Println("Email sent successfully!")
}
swap_horiz Zoho SMTP Relay (High Volume)
For high-volume transactional email, Zoho offers SMTP Relay as part of Zoho Workplace. This provides higher sending limits and better deliverability than standard SMTP.
SMTP Relay Features
- check_circle Higher sending limits
- check_circle IP-based authentication
- check_circle Delivery reports
- check_circle Send from any verified domain
SMTP Relay Settings
smtp-relay.zoho.com
25, 465, 587
rocket_launch For dedicated transactional email, consider Zoho's ZeptoMail service, which is specifically designed for high-volume application email.
speed Zoho Mail Sending Limits
| Plan | Daily Emails | Recipients/Email | Attachment Size |
|---|---|---|---|
| Free (Personal) | ~50 |
50 |
25 MB |
| Zoho Mail Lite | 250 |
100 |
40 MB |
| Zoho Workplace Standard | 300 ร users |
500 |
40 MB |
| Zoho Workplace Pro | 500 ร users |
500 |
40 MB |
| SMTP Relay | Configurable |
Unlimited |
40 MB |
build Troubleshooting
error
535 Authentication Failed
expand_more
This error occurs when Zoho rejects your login credentials.
Solutions:
- check_circle Check your regional server: Make sure you're using the SMTP server matching your account's region (smtp.zoho.com, smtp.zoho.eu, etc.)
- check_circle If 2FA is enabled, use an App-Specific Password instead of your account password
- check_circle For business accounts, use smtppro.zoho.* instead of smtp.zoho.*
- check_circle Verify IMAP/SMTP access is enabled in your Zoho Mail settings
error
553 Relaying disallowed
expand_more
The 'From' address doesn't match your authenticated account.
Solutions:
- check_circle Use your Zoho email address (or a verified alias) as the 'From' address
- check_circle For business accounts, ensure the domain is verified in Zoho
error
Connection timeout
expand_more
Unable to connect to Zoho's SMTP server.
Solutions:
- check_circle Check if your firewall blocks port 465 or 587
- check_circle Verify the SMTP hostname is correct for your region
- check_circle Try switching between port 465 (SSL) and 587 (TLS)
error
550 Daily sending limit exceeded
expand_more
You've reached Zoho's daily sending limit for your account type.
Solutions:
- check_circle Wait 24 hours for the limit to reset
- check_circle Upgrade to a paid Zoho Workplace plan for higher limits
- check_circle Consider using Zoho's SMTP Relay or ZeptoMail for high-volume sending
quiz Frequently Asked Questions
What's the difference between smtp.zoho.com and smtppro.zoho.com? expand_more
smtp.zoho.com is for free personal Zoho Mail accounts (@zohomail.com). smtppro.zoho.com is for paid Zoho Workplace (business) accounts with custom domains. Using the wrong server will result in authentication errors.
How do I find which Zoho region my account is in? expand_more
Check the URL when you log in to Zoho Mail:
- mail.zoho.com โ US region (smtp.zoho.com)
- mail.zoho.eu โ EU region (smtp.zoho.eu)
- mail.zoho.in โ India region (smtp.zoho.in)
- mail.zoho.com.au โ Australia region (smtp.zoho.com.au)
Can I send from a custom domain with Zoho's free plan? expand_more
No, Zoho's free personal plan only allows @zohomail.com addresses. To send from a custom domain, you need Zoho Workplace (paid business plan). Note that Zoho previously offered a free custom domain plan but it has been discontinued for new users.
What's the difference between Zoho Mail, ZeptoMail, and SMTP Relay? expand_more
- Zoho Mail: Standard email service for personal correspondence and business email.
- SMTP Relay: Part of Zoho Workplace, allows higher-volume sending with IP-based authentication.
- ZeptoMail: Dedicated transactional email service (separate product) for application-generated emails with high deliverability, pay-per-email pricing, and detailed analytics.
Need High-Volume Transactional Email?
For high-volume application email, consider dedicated transactional email services with better deliverability, analytics, and scalability.