What makes Zoho ZeptoMail special?
Amazon Simple Email Service (Amazon SES) offers competitive pricing but requires additional payment for some basic features. Businesses seeking detailed tracking and 24/7 support for transactional emails may find Amazon SES less intuitive.
Why spend time configuring features when they should be easily accessible?
ZeptoMail, a specialized transactional email service, prioritizes fast and secure delivery. Unlike Amazon SES, all of our features are accessible with a single click, without complex setups or addons. Additionally, we offer 24/7 technical support at no extra cost.
Get started with Zoho ZeptoMail.
Follow this four-step guide for a smooth transition from Amazon SES to Zoho ZeptoMail.
Sign up for Zoho ZeptoMail.
Sign up for Zoho ZeptoMail by entering the relevant credentials.
Once you sign up, you’ll receive a verification email to validate your email address.
After you verify your account, you’ll be asked to enable two-factor authentication (TFA) for your account. You can choose from the list of TFA options to enable it.
Domain addition and verification
As soon as you complete your account verification, you can start adding your domain address.
Set up DKIM, and CNAME records in your DNS configuration to verify your domain.
Learn more from this step-by-step guide on how to add and verify your domain.
Modify one line of your existing code
You can easily switch from Amazon SES to ZeptoMail by just changing this one line of your API code.
Send an API request to https://api.zeptomail.com/v1.1/as/email
To authorize your request, you need to add the Send mail token in the header section.
Send transactional emails from ZeptoMail
Welcome to Zoho ZeptoMail. You can start sending your transactional emails via ZeptoMail. Happy email sending!
![Sign up for Zoho ZeptoMail](http://www.zohowebstatic.com/sites/zweb/images/zeptomail/migration/step-1.jpg)
![Domain addition and verification](http://www.zohowebstatic.com/sites/zweb/images/zeptomail/migration/step-2.jpg)
curl -X POST https://api.zeptomail.com/v1.1/as/email \
-H "Authorization: Zoho-enczapikey YOUR_API_KEY_HERE" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"Content": {
"Simple": {
"Body": {
"Html": {
"Charset": "UTF-8",
"Data": "<p>Hello</p>"
},
"Text": {
"Charset": "UTF-8",
"Data": "Hello"
}
},
"Subject": {
"Charset": "UTF-8",
"Data": "Test subject"
}
}
},
"Destination": {
"BccAddresses": [
"recipient1@example.com"
],
"CcAddresses": [
"recipient2@example.com"
],
"ToAddresses": [
"recipient3@example.com"
]
},
"FeedbackForwardingEmailAddress": "bounce@example.com",
"FromEmailAddress": "sender@example.com",
"ReplyToAddresses": [
"reply@example.com"
]
}'
fetch("https://api.zeptomail.com/v1.1/as/email", {
body: JSON.stringify({
"Content": {
"Simple": {
"Body": {
"Html": {
"Charset": " UTF-8",
"Data": "<p>Hello</p>"
},
"Text": {
"Charset": "UTF-8",
"Data": "Hello"
}
},
"Subject": {
"Charset": "UTF-8",
"Data": "Test subject"
}
}
},
"Destination": {
"BccAddresses": [
"bcc@example.com"
],
"CcAddresses": [
"cc@example.com"
],
"ToAddresses": [
"recipient@example.com"
]
},
"FeedbackForwardingEmailAddress": "bounce@example.com",
"FromEmailAddress": "sender@example.com",
"ReplyToAddresses": [
"reply@example.com"
]
}),
method: "POST",
headers: {
"Authorization": "Zoho-enczapikey [your-api-key]",
"Accept": "application/json",
"Content-Type": "application/json"
}
})
.then(async (resp) => {
if (resp.ok) {
let result = await resp.json();
console.log(result);
} else {
console.log(`Error: ${resp.statusText}`);
const errorBody = await resp.text();
console.log(`Error body: ${errorBody}`);
}
})
.catch((err) => {
console.log('Error sending email:', err);
});
using System;
using System.IO;
using System.Net;
using System.Text;
using Newtonsoft.Json;
namespace ZeptoMailRequest
{
public class Program
{
public static void Main(string[] args)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var baseAddress = "https://api.zeptomail.com/v1.1/as/email";
var http = (HttpWebRequest)WebRequest.Create(new Uri(baseAddress));
http.Accept = "application/json";
http.ContentType = "application/json";
http.Method = "POST";
http.PreAuthenticate = true;
http.Headers.Add("Authorization", "Zoho-enczapikey [your-api-key]");
var payload = new
{
Content = new
{
Simple = new
{
Body = new
{
Html = new
{
Charset = "UTF-8",
Data = "<p>Hello</p>"
},
Text = new
{
Charset = "UTF-8",
Data = "Hello"
}
},
Subject = new
{
Charset = "UTF-8",
Data = "Test subject"
}
}
},
Destination = new
{
BccAddresses = new[] { "recipient1@example.com" },
CcAddresses = new[] { "recipient2@example.com" },
ToAddresses = new[] { "recipient3@example.com" }
},
FeedbackForwardingEmailAddress = "bounce@example.com",
FromEmailAddress = "from@example.com",
ReplyToAddresses = new[] { "reply@example.com" }
};
string jsonPayload = JsonConvert.SerializeObject(payload);
byte[] bytes = Encoding.UTF8.GetBytes(jsonPayload);
using (Stream newStream = http.GetRequestStream())
{
newStream.Write(bytes, 0, bytes.Length);
}
using (var response = http.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var sr = new StreamReader(stream))
{
var content = sr.ReadToEnd();
Console.WriteLine(content);
}
}
}
}
}
}
import requests
import json
# API endpoint URL
url = "https://api.zeptomail.com/v1.1/as/email"
# Payload containing email details
payload = {
"Content": {
"Simple": {
"Body": {
"Html": {
"Charset": "UTF-8",
"Data": "<p>Hello from Example</p>"
},
"Text": {
"Charset": "UTF-8",
"Data": "Hello from Example"
}
},
"Subject": {
"Charset": "UTF-8",
"Data": "Test subject"
}
}
},
"Destination": {
"BccAddresses": [
"recipient1@example.com"
],
"CcAddresses": [
"recipient2@example.com"
],
"ToAddresses": [
"recipient3@example.com"
]
},
"FeedbackForwardingEmailAddress": "bounce@example.com",
"FromEmailAddress": "sender@example.com",
"ReplyToAddresses": [
"reply@example.com"
]
}
# Headers containing authorization and content-type
headers = {
"Authorization": "Zoho-enczapikey YOUR_API_KEY_HERE",
"Accept": "application/json",
"Content-Type": "application/json"
}
# Sending POST request to the API endpoint
try:
response = requests.post(url, headers=headers, data=json.dumps(payload))
response.raise_for_status() # Raise error if HTTP request failed
result = response.json() # Parse JSON response
print(result)
except requests.exceptions.RequestException as err:
print(f"Error: {err}")
<?php
// API endpoint URL
$url = "https://api.zeptomail.com/v1.1/as/email";
// Payload containing email details
$payload = [
"Content" => [
"Simple" => [
"Body" => [
"Html" => [
"Charset" => "UTF-8",
"Data" => "<p>Hello from Example</p>"
],
"Text" => [
"Charset" => "UTF-8",
"Data" => "Hello from Example"
]
],
"Subject" => [
"Charset" => "UTF-8",
"Data" => "Test subject"
]
]
],
"Destination" => [
"BccAddresses" => [
"recipient1@example.com"
],
"CcAddresses" => [
"recipient2@example.com"
],
"ToAddresses" => [
"recipient3@example.com"
]
],
"FeedbackForwardingEmailAddress" => "bounce@example.com",
"FromEmailAddress" => "sender@example.com",
"ReplyToAddresses" => [
"reply@example.com"
]
];
// Headers containing authorization and content-type
$headers = [
"Authorization: Zoho-enczapikey YOUR_API_KEY_HERE",
"Accept: application/json",
"Content-Type: application/json"
];
// Initialize cURL session
$ch = curl_init($url);
// Set cURL options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
// Execute the POST request
$response = curl_exec($ch);
// Check for errors
if ($response === false) {
$error = curl_error($ch);
echo "Error: $error";
} else {
// Parse and print the response
$result = json_decode($response, true);
print_r($result);
}
// Close cURL session
curl_close($ch);
?>
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import org.json.JSONObject;
public class ZeptoMailApi {
public static void main(String[] args) {
try {
// API endpoint URL
URL url = new URL("https://api.zeptomail.com/v1.1/as/email");
// Create a JSON object for the payload
JSONObject payload = new JSONObject();
JSONObject htmlBody = new JSONObject();
htmlBody.put("Charset", "UTF-8");
htmlBody.put("Data", "<p>Hello</p>");
JSONObject textBody = new JSONObject();
textBody.put("Charset", "UTF-8");
textBody.put("Data", "Hello");
JSONObject body = new JSONObject();
body.put("Html", htmlBody);
body.put("Text", textBody);
JSONObject subject = new JSONObject();
subject.put("Charset", "UTF-8");
subject.put("Data", "Test subject");
JSONObject simple = new JSONObject();
simple.put("Body", body);
simple.put("Subject", subject);
JSONObject content = new JSONObject();
content.put("Simple", simple);
payload.put("Content", content);
JSONObject destination = new JSONObject();
destination.put("BccAddresses", new String[] {"recipient1@example.com"});
destination.put("CcAddresses", new String[] {"recipient2@example.com"});
destination.put("ToAddresses", new String[] {"recipient3@example.com"});
payload.put("Destination", destination);
payload.put("FeedbackForwardingEmailAddress", "bounce@example.com");
payload.put("FromEmailAddress", "sender@example.com");
payload.put("ReplyToAddresses", new String[] {"reply@example.com"});
// Set up the connection
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "Zoho-enczapikey YOUR_API_KEY_HERE");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);
// Write payload to request body
try (OutputStream os = conn.getOutputStream()) {
byte[] input = payload.toString().getBytes("utf-8");
os.write(input, 0, input.length);
}
// Get the response
Scanner scanner = new Scanner(conn.getInputStream(), "UTF-8");
String response = scanner.useDelimiter("\\A").next();
scanner.close();
System.out.println("Response: " + response);
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
![Send transactional emails from ZeptoMail](http://www.zohowebstatic.com/sites/zweb/images/zeptomail/migration/step-4.jpg)
How is ZeptoMail different from Amazon SES?
Here are the concepts and terminologies that will help you easily navigate while using Zoho ZeptoMail.
- Email Segments
- DNS Requirements
- Attachment Management
- User Management
- User Activity Logs
- Measure
- Content Storage
- Activity Data Storage
- Suppress Emails
- Email Trackers
- Subscription
- Support
- IP Restrictions
- Webhooks
- Email Templates
- Configuration → Configuration SetsSegment your outbound messages by segregating into different subaccounts.
- Configuration → Identities → Create Identity → DomainUnder Domain, verify your domain by entering your SPF, DKIM, and CNAME details.
- Virtual Deliverability → Manager → Dashboard → Account StatisticsGet detailed statistics of sent, delivered, transient bounces, permanent bounces, complaints, clicks, and opens.
- You can store data in Amazon Kinesis. (This is a different service that needs to be purchased in order to store data).
- Configuration → Suppression ListsBounces and complaints are added to suppression lists manually and automatically.
- Settings → Additional Settings → Enable TrackingEnable engagement tracking to keep track of opens and clicks.
- For 50,000 emails$5.12: Pricing changes based on the features you pick. (This is basic pricing to send 50,000 emails).Extra to add attachments to your emails.
- 24/7 email, phone, and chat support is available for all users.
- Settings → WebhooksAdd webhooks to domains to receive notifications on events linked to the messages you send.
- Configuration → Email TemplatesEmail templates can be added only via API.
- zeptomail
- Mail AgentsMail Agents are used to sort your emails by type, purpose, application, and other criteria.
- Domains → DNS settingsValidate your domain through DKIM, and CNAME record configuration in your DNS settings.
- File CacheMaximize storage efficiency by uploading attachments to the File Cache. Use the File Cache key when sending emails through API.ZeptoMail’s File Cache feature supports 1GB of storage for an account.
- Manage usersRegulate the ownership and access control for multiple users under the account.(applicable to all users)
- Activity LogsBy accessing the activity logs, you can see the activities executed by different users within your ZeptoMail account.(1 year of activity log retention)
- ReportsObtain reports on sent, delivered, soft bounces, hard bounces, processing failures, opens, clicks, and custom reports for all users.
- Any number of creditsRetain content data for 60 days with ZeptoMail.
- Processed EmailsWithin the Processed Emails section, sent emails are displayed in the sequence they were processed.60 days of processed email data retention and content retention.
- Suppression ListHard bounces and unsubscribes are automatically or manually added to the suppression list.
- Mail Agent → Email TrackingOpen and click tracking for each Mail Agent to track the performance of emails in ZeptoMail.
- For 50,000 emails$12.50 (5 credits): Access all features for all users; valid for 6 months for every user.Buy credits and pay only for the used emails.1 credit free (10,000 emails) for 6 months.
- All users benefit from 24/7 extensive technical support via phone, email, and chat.
- IP RestrictionsAssign a list of IPs solely authorized for sending emails exclusively from your ZeptoMail account.
- Mail Agent → WebhooksEstablish webhooks to receive notifications about actions within your emails.
- Mail Agents → TemplatesBuilt-in email templates are available on ZeptoMail. You can also customize or create a new one.
Get a detailed comparison between Amazon SES and ZeptoMail.
Amazon SES vs. ZeptomailAmazon SES Transition API Code Explained
A detailed documentation into Amazon SES transition API to start sending your transactional emails from ZeptoMail.
Amazon SES Transition APIZeptoMail feature highlights
- Mail Agents
- File Cache
- Processed Emails
- Email Templates
- Webhooks
- Email Tracking
- Domains
- Suppression List
- Reports
- Subscription
- Manage Users
- Activity Logs
- Content Settings
- IP Restrictions
- Export Logs
Why should you choose ZeptoMail?
Exclusively Transactional
ZeptoMail provides a dedicated service that delivers emails swiftly with top-notch inbox placement.
User-friendly Interface
ZeptoMail’s interface is simple to use, ensuring seamless integration with your business.
Email Segmentation
Group your emails into Mail Agents, categorizing them by domain, application, or purpose.
No Gatekeeping
Experience all of the features without any restrictions. No updates or extra costs are needed to access ZeptoMail’s capabilities.
Comprehensive Reports
Stay informed about your activities with detailed reports and logs from ZeptoMail, where every action is meticulously recorded as data.
Flexible Pricing
Eliminate the need for monthly plan payments and unused email expenses with ZeptoMail’s pay-as-you-go pricing.
Attachment Storage
ZeptoMail's File Cache is used to store attachments for quick access during the process of sending emails.
24/7 Support
Access chat, phone, and email support around the clock for assistance with anything ZeptoMail-related.
Security and Privacy
ZeptoMail adopts a "security-first" approach in order to protect the confidentiality of transactional emails.
Frequently asked questions
Kickstart your journey with Zoho ZeptoMail for a seamless user-experience.
All names and marks mentioned here remain the property of their original owners. Details are as published by the named competitors on their website(s) on April 2024 and are subject to change without notice. The details provided on this page are for general purposes only and cannot be considered as authorized information from the respective competitors. Zoho disclaims any liability for possible errors, omissions, or consequential losses based on the details here.