Mailgun to Zoho ZeptoMail in just 5 minutes.

Make the transition to ZeptoMail by modifying just one line of your existing code.

What makes ZeptoMail special?

Mailgun is an email service for developers that allows them to send, receive, and monitor emails. It can be used to send both transactional emails and marketing emails. Mailgun offers different features, but it requires an expensive upgrade to use most of the important features.

If your primary focus is to send transactional emails, why would you pay for two different services?

With Zoho ZeptoMail, you pay for what you use. ZeptoMail is a dedicated transactional email platform used to send transactional emails ensuring email delivery speed and inbox placement. Unlike Mailgun, you get to use all of the features regardless of what you pay.

Get started with Zoho ZeptoMail.

Make the move from Mailgun to Zoho ZeptoMail following this simple four-step guide.

Step

Sign up for Zoho ZeptoMail.

  • Sign up for Zoho ZeptoMail by providing the necessary credentials.

  • You’ll get a verification email to confirm your email address.

  • Once your account is verified, you’ll need to set up two-factor authentication by selecting from the available options.

Step

Add and verify your domain.

Step

Modify one line of your existing code.

  • You can transition from Mailgun to ZeptoMail by changing just one line of your API code.

  • Make an API call to https://api.zeptomail.com/v1.1/mg/email

  • To authenticate the request, include the send mail token in the header.

Step

Welcome aboard!

  • Welcome to ZeptoMail. You’re all set to send your transactional emails from ZeptoMail. Happy email sending :)

Sign up for Zoho ZeptoMail
Domain addition and verification
 
             
copy
                                            
curl -X POST "https://api.zeptomail.com/v1.1/mg/email" \
     -H "Authorization: Zoho-enczapikey YOUR_API_KEY_HERE" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     --data "from=sender@example.in" \
     --data "to=recipient1@example.com,recipient2@example.com" \
     --data "subject=Test Email" \
     --data "text=This is a test email." \
     --data "html=Test Email" \
     --data "cc=recipient3@example.com,recipient4@example.com" \
     --data "bcc=recipient5@example.com,recipient6@example.com"
                                            
                                        
                                            
let formdata = new FormData();

formdata.append("from", "sender@example.com");
formdata.append("to", "recipient1@example.com,recipient2@example.com");
formdata.append("subject", "Test Email");
formdata.append("text", "Hello, this is test Email");
formdata.append("html", "<div>Hello, this is test Email</div>");
formdata.append("cc", "cc1@example.com,cc2@example.com");
formdata.append("bcc", "bcc1@example.com,bcc2@example.com");

fetch("https://api.zeptomail.com/v1.1/mg/email", {
    body: formdata,
    method: "POST",
    headers: {
        "Authorization": "Zoho-enczapikey [your-api-key]",
    }
})
.then(async (resp) => {
    let result = await resp.json();
    console.log(result,result.details);
})
.catch((err) => {
    console.log(err);
});
                                            
                                        
                                            
using System;
using System.Collections.Specialized;
using System.Net;
using System.Text;

public class Program
{
    public static void Main()
    {
        string url = "https://api.zeptomail.com/v1.1/mg/email";

        var formData = new NameValueCollection
        {
            { "from", "sender@example.com" },
            { "to", "recipient1@example.com","recipient2@example.com" },
            { "subject", "Test Email" },
            { "text", "This is a test email." },
            { "html", "<div>>b>Test Email>/b>>/div>" },
            { "cc", "recipient3@example.com,recipient4@example.com" },
            { "bcc", "recipient5@example.com,recipient6@example.com" }
        };

        using (var client = new WebClient())
        {
            client.Headers.Add("Authorization", "Zoho-enczapikey [your-api-key]");

            try
            {
                byte[] responseBytes = client.UploadValues(url, "POST", formData);
                string responseBody = Encoding.UTF8.GetString(responseBytes);
                Console.WriteLine(responseBody);
            }
            catch (WebException e)
            {
                Console.WriteLine("Error: " + e.Message);
                if (e.Response != null)
                {
                    using (var reader = new System.IO.StreamReader(e.Response.GetResponseStream()))
                    {
                        Console.WriteLine(reader.ReadToEnd());
                    }
                }
            }
        }
    }
}
                                            
                                        
                                            
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder

# Creating form data for the request
formdata = MultipartEncoder(
    fields={
        "from": "sender@example.in",
        "to": "recipient1@example.com,recipient2@example.com",
        "subject": "Test Email",
        "text": "This is a test email.",
        "html": "<div><b>Test Email</b></div>",
        "cc": "recipient3@example.com,recipient4@example.com",
        "bcc": "recipient5@example.com,recipient6@example.com"
    }
)

# API endpoint URL
url = "https://api.zeptomail.com/v1.1/mg/email"

# Headers including authorization and content type
headers = {
    "Authorization": "Zoho-enczapikey YOUR_API_KEY_HERE",
    "Content-Type": formdata.content_type  # Required for multipart form data
}

# Sending POST request to the API endpoint
try:
    response = requests.post(url, headers=headers, data=formdata)
    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/mg/email";

// Form data as an array
$formData = [
    "from" => "sender@example.in",
    "to" => "recipient1@example.com,recipient2@example.com",
    "subject" => "Test Email",
    "text" => "This is a test email.",
    "html" => "<div><b>Test Email</b> </div>",
    "cc" => "recipient3@example.com,recipient4@example.com",
    "bcc" => "recipient5@example.com,recipient6@example.com"
];

// Authorization header
$headers = [
    "Authorization: Zoho-enczapikey YOUR_API_KEY_HERE"
];

// Initialize cURL session
$ch = curl_init($url);

// 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, $formData);

// Execute the POST request
$response = curl_exec($ch);

// Check for errors in the request
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 org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class ZeptoMailMultipart {

    public static void main(String[] args) {
        String url = "https://api.zeptomail.com/v1.1/mg/email";
        String apiKey = "Zoho-enczapikey YOUR_API_KEY_HERE";

        // Build the multipart form data
        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.addTextBody("from", "sender@example.in", ContentType.TEXT_PLAIN);
        builder.addTextBody("to", "recipient1@example.com,recipient2@example.com", ContentType.TEXT_PLAIN);
        builder.addTextBody("subject", "Test Email", ContentType.TEXT_PLAIN);
        builder.addTextBody("text", "This is a test email.", ContentType.TEXT_PLAIN);
        builder.addTextBody("html", "<div><b>Test Email</b> </div>", ContentType.TEXT_HTML);
        builder.addTextBody("cc", "recipient3@example.com,recipient4@example.com", ContentType.TEXT_PLAIN);
        builder.addTextBody("bcc", "recipient5@example.com,recipient6@example.com", ContentType.TEXT_PLAIN);

        HttpEntity multipart = builder.build();

        // Send the POST request
        try (CloseableHttpClient client = HttpClients.createDefault()) {
            HttpPost post = new HttpPost(url);
            post.setHeader("Authorization", apiKey);
            post.setEntity(multipart);

            CloseableHttpResponse response = client.execute(post);
            HttpEntity responseEntity = response.getEntity();

            String result = EntityUtils.toString(responseEntity);
            System.out.println("Response: " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
                                           
                                        
Send transactional emails from ZeptoMail

How is ZeptoMail different from Mailgun?

The concepts and terminologies will help you navigate Zoho ZeptoMail.

  •  
  • Email segments
  • DNS Requirements
  • Attachment Management
  • User Management
  • User Activity Logs
  • Measure
  • Suppress Emails
  • Email Logs
  • Email Trackers
  • Logs and Content Retention
  • Subscription
  • Support
  • IPs
  • Webhooks
  • Mailgun
  •  
  • Domain Settings → DNS records Enter your SPF, SKIM, MX, and CNAME under DNS records to authenticate your domain.
  •  
  • Account users Manage ownership of multi-users in an account. (Only applicable to upgraded users)
  • User sessions The app records all of the user’s activity in user-sessions.
  • Analytics Receive reports of accepted, delivered, opened, and failed mails. Upgrade your account to add a custom domain and view in-depth analytics about the messages you send.
  • Suppressions Bounces, complaints, unsubscribes, and whitelists are added to suppression lists manually or automatically.
  • Logs Logs record the message events for every email address you reach.
  • Enable tracking Enable click and open tracking for sending domains.
  • Basic plan foundation 5 days of log retention. 1 day of message retention. (Even enterprise-level plans provide 30 days of log retention and 7 days of message retention).
  • Scale for 100,000 emails $90 per month + additional charges for access to all features. Free for 30 days.
  • 24/7 ticket support. You’ll need to upgrade for live phone support and instant chat support.
  • IP addresses You can add IP addresses associated to your account.
  • Sending → webhooks Webhooks are added to domains to receive notifications on the activities linked to the messages you send.
  • zeptomail
  • Mail Agents Organize your emails using Mail Agents by type, purpose, app, and more.
  • Domains → DNS settings Validate your domain by configuring DKIM, and CNAME records within your DNS settings
  • File Cache Upload attachments to the File Cache and save more space. You can insert the File Cache key when sending emails. The File Cache supports 1GB of storage for an account.
  • Manage users Control the ownership and permissions of multiple users on the account. (Applicable to all users)
  • Activity logs Activity logs allow you to see the actions carried out by various users in your ZeptoMail account.
  • Reports Get detailed insights into sent, delivered, soft bounces, hard bounces, process failed, opens, clicks, and custom reports for all users.
  • Suppression list Automatically, some hard bounces are added to the suppression list. You can also manually suppress email addresses and domains.
  • Processed emails Processed emails are shown in the order they were sent.
  • Email tracking To track open and click events in ZeptoMail, you will have to activate tracking individually for each Mail Agent.
  • Any number of credits 60 days of processed email data retention and content retention (should be enabled in settings). 1 year of activity log retention.
  • 10 credits for 100,000 emails $25 (10 credits) for access to all features for all users. 1 credit free (10,000 emails) for6 months.
  • 24/7 technical support along with extensive phone and chat support.
  • IP restrictions Add a list of IPs that will be used to send emails from ZeptoMail.
  • Mail Agent → webhooks Webhooks should be configured to receive notifications about activities in your emails. (Webhooks are an optional feature for all users.)

Mailgun Transition API Code Explained

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

Mailgun 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

A Mail Agent in ZeptoMail is used for organizing your transactional emails by type, purpose, applications, and more. This functionality helps in effectively handling numerous applications or different transactional emails for your business. Every Mail Agent is assigned a distinct API token and SMTP credentials. Learn more

File Cache

File Cache

ZeptoMail's File Cache feature streamlines attachment management, allowing you to include images in your transactional emails using a File Cache key in your email API, eliminating the need for manual uploads. With up to 1GB of storage per account, ZeptoMail simplifies the process. Learn more

Processed Emails

Processed Emails

The Processed Emails feature allows you to track the status of your sent emails, listed in the order of processing. The data is retained for a maximum of 60 days. You can export this list to track the performance of your transactional emails. Learn more

Email Templates

Email Templates

ZeptoMail offers transactional email templates, allowing you to skip writing the same email repeatedly. Instead, you can use standardized templates for OTPs, password resets, order confirmations, and more to streamline sending emails to your users. Learn more

Webhooks

Webhooks

Webhooks are personalized HTTP callbacks that are activated by certain events. In ZeptoMail, they quickly relay recipient activity data (opens, clicks, bounces) to your application the moment these interactions happen. When triggered, the webhook promptly sends this data to the designated URL, offering real-time notifications. Learn more

Email Tracking

Email tracking

Monitoring opens and clicks through email tracking is essential to measure the engagement of your transactional emails. In ZeptoMail, tracking these metrics requires enabling email tracking, which must be set up separately for each Mail Agent. Learn more

Domains

Domains

The Domains page in ZeptoMail is where you can manage and add up to 100 domains per account. It provides DKIM and CNAME values for DNS verification and allows you to see the domains associated with each Mail Agent, along with their verification status. Learn more

Suppression List

Suppression List

The Suppression List maintains a log of email addresses and domains that are excluded from receiving emails because of bounces, unsubscribes, or invalid entries. ZeptoMail can also automatically add bounced addresses to this list through its auto-suppression feature. Learn more

Reports

Reports

With ZeptoMail, you can get tailored reports to monitor the overall effectiveness of your transactional emails. You can easily compare two Mail Agents and access in-depth reports on opens, bounces, clicks, and user engagement. Always remember to enable Email Tracking to collect click and open data. Learn more

Subscription

Subscription

In ZeptoMail’s subscription section, you can view your purchased credits, transaction details, remaining credits, and emails. You can also buy additional credits and set up auto top-up for automatic credit replenishment. Ensure your account is reviewed and that you’ve made at least one credit purchase to activate it. Learn more

Manage Users

Manage Users

ZeptoMail's Manage Users feature allows you to manage up to 30 users per account, showing their roles and the Mail Agents they’re associated with. The three primary roles include Postmaster (admin with full privileges), Engineer (multiple access), and Viewer (view-only access). Learn more

Activity Logs

Activity Logs

In ZeptoMail, activity logs keep track of user actions such as renaming files, updating Mail Agents, and creating templates. Logs can be exported for compliance, with the .zip file available for three days. You can export up to 5,000 records at a time. Learn more

Content Settings

Content Settings

In ZeptoMail, you can preserve the content of your transactional emails in the Content Settings section of the Settings menu. This content remains viewable for 60 days in the Processed Emails tab under each Mail Agent. Check the “Save the email content” box to save your content. Learn more

IP restrictions

IP Restrictions

In ZeptoMail, the IP restriction feature allows you to specify a list of IPs permitted to send emails from your account. By adding your IPs to this list, you enhance security by preventing unauthorized access and protecting against token compromise. Learn more

Export Logs

Export Logs

In ZeptoMail, you can export email logs, activity logs, and suppression lists. The exported files can be password-protected, providing an extra layer of security to safeguard your data and confidential information from unauthorized access. Learn more

  15 1 2  

Why choose ZeptoMail?

  • Exclusively transactional

    ZeptoMail offers a dedicated solution that guarantees quick delivery and inbox placement.

  • User-friendly interface

    Integrate ZeptoMail into your business effortlessly with its easy-to-use interface.

  • Email segmentation

    Sort your emails into Mail Agents according to domain, application, purpose, and other criteria.

  • No gatekeeping

    Enjoy uninterrupted access to all features. ZeptoMail's functionalities require no updates or additional expenses.

  • Comprehensive reports

    ZeptoMail's detailed reports and logs keep you updated on all of your activities, documenting each action as data for complete tracking.

  • Flexible pricing

    Say goodbye to monthly plan payments and unused email costs with ZeptoMail's pay-as-you-go pricing model.

  • Attachment storage

    Use ZeptoMail's File Cache feature to save and upload attachments for smoother email sending.

  • 24/7 support

    Connect with ZeptoMail's chat, phone, and email support for any assistance related to ZeptoMail.

  • Security and privacy

    ZeptoMail prioritizes security, taking a "security-first" stance given the sensitive nature of transactional email content.

Frequently asked questions

How long does it take to transition to ZeptoMail?

Switching to ZeptoMail is quick and easy. Modify just one line of your API code and begin sending transactional emails in five minutes.

Will your email deliverability affect after transition?

Absolutely not. ZeptoMail maintains your sender reputation by sending emails from dedicated IPs and guarantees high deliverability. You can trust that your emails will be delivered promptly and reliably with ZeptoMail after transition.

How much does it cost to transition to ZeptoMail?

No additional charges are required to make a transition to ZeptoMail. You’ll only be charged for the emails you send through ZeptoMail.

Is ZeptoMail more affordable than Mailgun?

Yes, ZeptoMail is much more affordable than Mailgun. ZeptoMail is $65 less than Mailgun for every 50,000 emails. ZeptoMail costs around $25 (10 credits) for 1,000,000 emails, whereas Mailgun's Scale plan costs $90 every month for 1,000,000 emails. ZeptoMail charges only for the used emails and no extra charges for unused emails.

Can you start sending emails right after you create an account?

Yes. Right after you create your account and verify your domain, you’ll be able to send up to 10,000 emails, limited to 100 emails per day. Additional credits can be purchased after your account has been reviewed.

Why do you need a Mail Agent?

A Mail Agent is used to group all of your transactional emails. You’ll be sending different transactional emails like OTPs, password rests, order confirmations, and payment confirmations from ZeptoMail. So, ZeptoMail uses Mail Agents to manage them efficiently.

How do you purchase more ZeptoMail credits?

You can buy credits either from the dashboard panel or the subscription panel. Each ZeptoMail credit allows you to send 10,000 emails and remains valid for six months.

What happens if you run out of email credits?

You’ll no longer be able to send emails. To avoid this, turn on the auto-up in your account to automatically purchase email credits when you reach your predefined limit.

What happens to the unused emails?

Unused emails from each credit will be carried over to the following month and will remain valid for up to six months.

  9 1 2  

Switch to experience secure email sending at an affordable pricing.