What makes ZeptoMail so special?
MailChannels is an email sending API service for Cloudflare Workers customers. They’ve recently announced an end of life notice, requesting customers to switch to another transactional email service to continue their email sending process.
Are you a MailChannels user hanging in there without knowing which email service to rely on and invest in?
If you’re a MailChannels user looking to switch to an affordable transactional email service, this is the right time to transition to Zoho ZeptoMail. Along with highly reliable transactional email sending and management, every user can send up to 10,000 free emails on sign up. Our pay-as-you-go plan ensures you pay only for the emails you use. With ZeptoMail's top-notch features, you get to experience excellent deliverability and high security at an affordable price.
Get started with Zoho ZeptoMail.
Here’s a quick roadmap to starting your transition journey from MailChannels to Zoho ZeptoMail using this simple four-step guide.
Sign up for Zoho ZeptoMail.
Sign up for Zoho ZeptoMail by entering the relevant credentials.
Right after you sign up, you’ll receive a verification email to validate your email address.
Once you verify your account, you’ll reach the page where you can enable two-factor authentication for your account.
Domain addition and verification.
As soon as you sign up, you can start adding your domain.
Add DKIM and CNAME records in your DNS configuration to verify your domain.
Learn more from the step-by-step guide on how to add and verify your domain.
Modify one line of your existing API code.
You can easily make the transition from MailChannels to ZeptoMail by just changing this one line of your API code.
Send an API request to https://api.zeptomail.com/v1.1/mc/email
To authorize your request, you need to add the send mail token (Mail Agents→ setup info→ API→ copy send mail token) in the header section.
Send transactional emails from ZeptoMail.
You can now start sending your transactional emails from Zoho 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 "https://api.zeptomail.com/v1.1/mc/email" \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization:[sendmail_token]" \
-d '{
\"headers\" : { \"key\" : \"headers\" },
\"from\": { \"email\": \"fromAddress@example.com\", \"name\": \"fromName\" },
\"personalizations\" : [ { \"cc\" : [ { \"name\" : \"ccName\", \"email\" : \"ccAddress@example.com\" } ],
\"bcc\" : [ { \"name\" : \"bccName\", \"email\" : \"bccAddress@example.com\" } ],
\"to\" : [ { \"name\" : \"toName\", \"email\" : \"toAddress@example.com\" } ] } ],
\"subject\" : \"Test subject\",
\"content\" : [ { \"type\" : \"html/text\", \"value\" : \"This is a test email\" } ],
\"reply_to\" : { \"email\": \"replyToAddress@example.com\", \"name\": \"replyToName\" } }'
import fetch from 'node-fetch';
fetch("https://api.zeptomail.com/v1.1/mc/email", {
body: JSON.stringify({
"personalizations": [
{
"to": [
{
"email": "email",
"name": "name"
}
],
"bcc": [
{
"email": "email",
"name": "name"
}
]
},
{
"to": [
{
"email": "email",
"name": "name"
}
],
"cc": [
{
"email": "email",
"name": "name"
}
]
}
],
"from": {
"email": "email",
"name": "name"
},
"reply_to": {
"email": "email",
"name": "name"
},
"subject": "Your Example Order Confirmation",
"content": [
{
"type": "text/html",
"value": "Hello, this is a test mail"
}
],
"headers":{
"customHeaders":"headers",
}
}),
method: "POST",
headers: {
"Authorization": "Zoho-enczapikey ***",
"Accept": "application/json",
"Content-Type": "application/json"
}
})
using System;
using System.Net;
using System.Text;
using System.IO;
using System.Net.Http;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
var baseAddress = "https://api.zeptomail.com/v1.1/mc/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", "[send_mail_token]");
JObject parsedContent = JObject.Parse("{
'headers' : {
'key' : 'headers'
},
'from': {
'email': 'fromAddress@example.com',
'name': 'fromAddress'
},
'personalizations' : [ {
'cc' : [ {
'name' : 'ccName',
'email' : 'ccAddress@example.com'
} ],
'bcc' : [ {
'name' : 'bccName',
'email' : 'bccAddress@example.com'
} ],
'subject' : 'Test subject',
'to' : [ {
'name' : 'toName',
'email' : 'toAddress@example.com'
} ]
} ],
'content' : [ {
'type' : 'html/text',
'value' : 'This is a test email'
} ],
'reply_to' : {
'email': 'replyToName',
'name': 'replyToAddress@example.com'
}
}");
Console.WriteLine (parsedContent.ToString());
ASCIIEncoding encoding = new ASCIIEncoding();
Byte[] bytes = encoding.GetBytes(parsedContent.ToString());
Stream newStream = http.GetRequestStream();
newStream.Write(bytes, 0, bytes.Length);
newStream.Close();
var response = http.GetResponse();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();
Console.WriteLine (content);
}
}
}
import requests
url = "https://api.zeptomail.com/v1.1/mc/email"
payload = "{ \"headers\" : { \"key\" : \"headers\" }, \"from\": { \"email\": \"fromAddress@example.com\", \"name\": \"fromName\" }, \"personalizations\" : [ { \"cc\" : [ { \"name\" : \"ccName\", \"email\" : \"ccAddress@example.com\" } ], \"bcc\" : [ { \"name\" : \"bccName\", \"email\" : \"bccAddress@example.com\" } ], \"to\" : [ { \"name\" : \"toName\", \"email\" : \"toAddress@example.com\" } ] } ], \"subject\" : \"Test subject\", \"content\" : [ { \"type\" : \"html/text\", \"value\" : \"This is a test email\" } ], \"reply_to\" : { \"email\": \"replyToAddress@example.com\", \"name\": \"replyToName\" } }"
headers = {
'accept': "application/json",
'content-type': "application/json",
'authorization': "[send_mail_token]",
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.zeptomail.com/v1.1/mc/email",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{
"headers": {
"key": "headers"
},
"from": {
"email": "fromAddress@example.com",
"name": "fromAddress"
},
"personalizations": [
{
"cc": [
{
"name": "ccName",
"email": "ccAddress@example.com"
}
],
"bcc": [
{
"name": "bccName",
"email": "bccAddress@example.com"
}
],
"to": [
{
"name": "toName",
"email": "toAddress@example.com"
}
]
}
],
"subject": "Test subject",
"content": [
{
"type": "html/text",
"value": "This is a test email"
}
],
"reply_to": {
"name": "replyToName",
"email": "replyToAddress@example.com"
}
}'
CURLOPT_HTTPHEADER => array(
"accept: application/json",
"authorization: [send_mail_token]",
"cache-control: no-cache",
"content-type: application/json",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONObject;
public class JavaSendapi {
public static void main(String[] args) throws Exception {
String postUrl = "https://api.zeptomail.com/v1.1/mc/email";
BufferedReader br = null;
HttpURLConnection conn = null;
String output = null;
StringBuffer sb = new StringBuffer();
try {
URL url = new URL(postUrl);
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Authorization", "[send_mail_token]");
JSONObject object = new JSONObject("{
\"headers\" : { \"key\" : \"headers\" },
\"from\": { \"email\": \"fromAddress@example.com\", \"name\": \"fromName\" },
\"personalizations\" : [ {
\"cc\" : [ { \"name\" : \"ccName\", \"email\" : \"ccAddress@example.com\" } ],
\"bcc\" : [ { \"name\" : \"bccName\", \"email\" : \"bccAddress@example.com\" } ],
\"to\" : [ { \"name\" : \"toName\", \"email\" : \"toAddress@example.com\" } ] } ],
\"subject\" : \"Test subject\",
\"content\" : [ { \"type\" : \"html/text\", \"value\" : \"This is a test email\" } ],
\"reply_to\" : { \"email\": \"replyToAddress@example.com\", \"name\": \"replyToName\" }
}");
OutputStream os = conn.getOutputStream();
os.write(object.toString().getBytes());
os.flush();
br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
while ((output = br.readLine()) != null) {
sb.append(output);
}
System.out.println(sb.toString());
} catch (Exception e) {
br = new BufferedReader(new InputStreamReader((conn.getErrorStream())));
while ((output = br.readLine()) != null) {
sb.append(output);
}
System.out.println(sb.toString());
} finally {
try {
if (br != null) {
br.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
![Send transactional emails from ZeptoMail](http://www.zohowebstatic.com/sites/zweb/images/zeptomail/migration/step-4.jpg)
MailChannels Transition API Code Explained
A detailed documentation into MailChannels transition API to start sending your transactional emails from ZeptoMail.
MailChannels Transition APIZeptoMail feature highlights
- Mail Agents
- Processed Emails
- Email Templates
- Domains
- Webhooks
- Email Tracking
- File Cache
- Suppression List
- Subscription
- Reports
- Manage Users
- Activity Logs
- Content Settings
- IP Restrictions
- Export Logs
Why should you choose ZeptoMail?
Exclusively transactional
ZeptoMail ensures great inbox placement and delivery in seconds.
User-friendly interface
Easy-to-use interface seamlessly connects ZeptoMail to your business.
Email segmentation
Segment your emails into Mail Agents based on domain, application, or purpose.
No gatekeeping
Use all of the features without restrictions. No updates or additional costs are required to use ZeptoMail's features.
Comprehensive reports
Because every action is recorded as data, you’ll get detailed reports and logs to keep you informed of all your activities.
Flexible pricing
ZeptoMail's pay-as-you-go pricing ensures you only pay for the emails you use, without being tied to monthly plans or unused emails.
Attachment storage
Upload and store attachments in ZeptoMail's file cache for easy access when sending emails.
24/7 support
You’ll have 24/7 access to technical assistance over chat, phone, and email for anything related to ZeptoMail.
Security and privacy
ZeptoMail is built with a security-first approach because transactional emails contain confidential information.
Frequently asked questions
Register with ZeptoMail today and enjoy 10,000 free emails!
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.