Skip to main content

Amazon SES to Zoho ZeptoMail in just 5 minutes.

Transition smoothly to ZeptoMail by modifying just one line of your current code.

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.

Step

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.

Step

Domain addition and verification

Step

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.

Step

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
Domain addition and verification
 
       
copy

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

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
  • Amazon SES
  • 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. Zeptomail  

Amazon SES Transition API Code Explained

A detailed documentation into Amazon SES transition API to start sending your transactional emails from ZeptoMail.

Amazon SES Transition API  

ZeptoMail 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

Mail Agents

Mail Agents

Mail Agent in ZeptoMail is designed to categorize your transactional emails based on their type, purpose, applications, and other criteria. This feature is beneficial for managing multiple applications or various transactional emails within your organization. Each Mail Agent is given a unique API token and SMTP credentials for authentication. Learn more

 1512 

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

How long does it take to transition to ZeptoMail?

Switching to ZeptoMail is easy and fast. Update just one line of your API code, and you can start sending transactional emails within five minutes.

 812 

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.