🎯

zeptomail

🎯Skill

from vm0-ai/vm0-skills

VibeIndex|
What it does

Sends transactional emails via Zoho ZeptoMail API, supporting templated emails, attachments, and tracking for password resets, OTPs, and confirmations.

πŸ“¦

Part of

vm0-ai/vm0-skills(138 items)

zeptomail

Installation

Add MarketplaceAdd marketplace to Claude Code
/plugin marketplace add vm0-ai/vm0-skills
Install PluginInstall plugin from marketplace
/plugin install notion@vm0-skills
Install PluginInstall plugin from marketplace
/plugin install slack-webhook@vm0-skills
git cloneClone repository
git clone https://github.com/vm0-ai/vm0-skills.git
πŸ“– Extracted from docs: vm0-ai/vm0-skills
11Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

Zoho ZeptoMail transactional email API. Use this skill for sending password resets, OTPs, order confirmations, and other transactional emails.

Overview

# Zoho ZeptoMail

Use the ZeptoMail API via curl to send transactional emails like password resets, OTPs, welcome emails, and order confirmations.

> Official docs: https://www.zoho.com/zeptomail/help/api-home.html

---

When to Use

Use this skill when you need to:

  • Send transactional emails (password resets, OTPs, confirmations)
  • Send templated emails with dynamic merge fields
  • Batch send to multiple recipients (up to 500)
  • Track email opens and clicks
  • Send emails with attachments or inline images

Note: ZeptoMail is for transactional emails only. For marketing/bulk emails, use Zoho Campaigns instead.

---

Prerequisites

  1. Sign up at [Zoho ZeptoMail](https://www.zoho.com/zeptomail/)
  2. Add and verify your domain
  3. Create a Mail Agent and get your Send Mail Token

Get API Token

  1. Go to Mail Agents in ZeptoMail dashboard
  2. Click on your Mail Agent
  3. Go to SMTP & API tab
  4. Copy the Send Mail Token

```bash

export ZEPTOMAIL_API_KEY="your-send-mail-token"

```

Pricing

  • Free tier: 10,000 emails
  • Paid: $2.50 per 10,000 emails

---

> Important: When using $VAR in a command that pipes to another command, wrap the command containing $VAR in bash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.

> ```bash

> bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"'

> ```

How to Use

Base URL: https://api.zeptomail.com/v1.1

---

1. Send Basic Email

Write to /tmp/zeptomail_request.json:

```json

{

"from": {

"address": "noreply@yourdomain.com",

"name": "Your App"

},

"to": [

{

"email_address": {

"address": "user@example.com",

"name": "User"

}

}

],

"subject": "Welcome to Our Service",

"htmlbody": "

Welcome!

Thank you for signing up.

"

}

```

Then run:

```bash

bash -c 'curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey ${ZEPTOMAIL_API_KEY}" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json'

```

---

2. Send Plain Text Email

Write to /tmp/zeptomail_request.json:

```json

{

"from": {

"address": "noreply@yourdomain.com",

"name": "Your App"

},

"to": [

{

"email_address": {

"address": "user@example.com",

"name": "User"

}

}

],

"subject": "Your OTP Code",

"textbody": "Your one-time password is: 123456\n\nThis code expires in 10 minutes."

}

```

Then run:

```bash

bash -c 'curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey ${ZEPTOMAIL_API_KEY}" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json'

```

---

3. Send Email with Tracking

Enable open and click tracking:

Write to /tmp/zeptomail_request.json:

```json

{

"from": {

"address": "noreply@yourdomain.com",

"name": "Your App"

},

"to": [

{

"email_address": {

"address": "user@example.com",

"name": "User"

}

}

],

"subject": "Order Confirmation #12345",

"htmlbody": "

Your order has been confirmed. Track your order

",

"track_clicks": true,

"track_opens": true,

"client_reference": "order-12345"

}

```

Then run:

```bash

bash -c 'curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey ${ZEPTOMAIL_API_KEY}" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json'

```

---

4. Send to Multiple Recipients (CC/BCC)

Write to /tmp/zeptomail_request.json:

```json

{

"from": {

"address": "noreply@yourdomain.com",

"name": "Your App"

},

"to": [

{

"email_address": {

"address": "user1@example.com",

"name": "User 1"

}

}

],

"cc": [

{

"email_address": {

"address": "user2@example.com",

"name": "User 2"

}

}

],

"bcc": [

{

"email_address": {

"address": "admin@example.com",

"name": "Admin"

}

}

],

"subject": "Team Update",

"htmlbody": "

Here is the latest update for the team.

",

"reply_to": [

{

"address": "support@yourdomain.com",

"name": "Support"

}

]

}

```

Then run:

```bash

bash -c 'curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey ${ZEPTOMAIL_API_KEY}" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json'

```

---

5. Send Email with Attachment (Base64)

```bash

# Encode file to base64

FILE_CONTENT=$(base64 -i /path/to/file.pdf)

```

Write to /tmp/zeptomail_request.json:

```json

{

"from": {

"address": "noreply@yourdomain.com",

"name": "Your App"

},

"to": [

{

"email_address": {

"address": "user@example.com",

"name": "User"

}

}

],

"subject": "Your Invoice",

"htmlbody": "

Please find your invoice attached.

",

"attachments": [

{

"name": "invoice.pdf",

"mime_type": "application/pdf",

"content": "${FILE_CONTENT}"

}

]

}

```

Then run:

```bash

bash -c 'curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey ${ZEPTOMAIL_API_KEY}" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json'

```

---

6. Send Email with Inline Image

```bash

# Encode image to base64

IMAGE_CONTENT=$(base64 -i /path/to/logo.png)

```

Write to /tmp/zeptomail_request.json:

```json

{

"from": {

"address": "noreply@yourdomain.com",

"name": "Your App"

},

"to": [

{

"email_address": {

"address": "user@example.com",

"name": "User"

}

}

],

"subject": "Newsletter",

"htmlbody": "

Welcome to our newsletter!

",

"inline_images": [

{

"cid": "logo",

"name": "logo.png",

"mime_type": "image/png",

"content": "${IMAGE_CONTENT}"

}

]

}

```

Then run:

```bash

bash -c 'curl -s "https://api.zeptomail.com/v1.1/email" -X POST --header "Authorization: Zoho-enczapikey ${ZEPTOMAIL_API_KEY}" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json'

```

---

7. Send Templated Email

Use pre-defined templates with merge fields:

Write to /tmp/zeptomail_request.json:

```json

{

"template_key": "your-template-key",

"from": {

"address": "noreply@yourdomain.com",

"name": "Your App"

},

"to": [

{

"email_address": {

"address": "user@example.com",

"name": "User"

}

}

],

"merge_info": {

"user_name": "John",

"order_id": "12345",

"total": "$99.00"

}

}

```

Then run:

```bash

bash -c 'curl -s "https://api.zeptomail.com/v1.1/email/template" -X POST --header "Authorization: Zoho-enczapikey ${ZEPTOMAIL_API_KEY}" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json'

```

Template example (in ZeptoMail dashboard):

```html

Hi {{user_name}},

Your order #{{order_id}} totaling {{total}} has been shipped!

```

---

8. Batch Send (Multiple Recipients)

Send to up to 500 recipients with personalized merge fields:

Write to /tmp/zeptomail_request.json:

```json

{

"from": {

"address": "noreply@yourdomain.com",

"name": "Your App"

},

"subject": "Your Monthly Report - {{month}}",

"htmlbody": "

Hi {{name}},

Here is your report for {{month}}.

",

"to": [

{

"email_address": {

"address": "user1@example.com",

"name": "User 1"

},

"merge_info": {

"name": "Alice",

"month": "December"

}

},

{

"email_address": {

"address": "user2@example.com",

"name": "User 2"

},

"merge_info": {

"name": "Bob",

"month": "December"

}

}

]

}

```

Then run:

```bash

bash -c 'curl -s "https://api.zeptomail.com/v1.1/email/batch" -X POST --header "Authorization: Zoho-enczapikey ${ZEPTOMAIL_API_KEY}" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json'

```

---

9. Batch Send with Template

Write to /tmp/zeptomail_request.json:

```json

{

"template_key": "your-template-key",

"from": {

"address": "noreply@yourdomain.com",

"name": "Your App"

},

"to": [

{

"email_address": {

"address": "user1@example.com",

"name": "User 1"

},

"merge_info": {

"user_name": "Alice",

"code": "ABC123"

}

},

{

"email_address": {

"address": "user2@example.com",

"name": "User 2"

},

"merge_info": {

"user_name": "Bob",

"code": "XYZ789"

}

}

]

}

```

Then run:

```bash

bash -c 'curl -s "https://api.zeptomail.com/v1.1/email/template/batch" -X POST --header "Authorization: Zoho-enczapikey ${ZEPTOMAIL_API_KEY}" --header "Content-Type: application/json" -d @/tmp/zeptomail_request.json'

```

---

Response Format

Success Response

```json

{

"data": [

{

"code": "EM_104",

"additional_info": [],

"message": "OK"

}

],

"message": "OK",

"request_id": "abc123..."

}

```

Error Response

```json

{

"error": {

"code": "TM_102",

"details": [

{

"code": "TM_102",

"message": "Invalid email address",

"target": "to"

}

],

"message": "Invalid request"

},

"request_id": "abc123..."

}

```

---

Common Error Codes

| Code | Description |

|------|-------------|

| TM_101 | Authentication failed (invalid token) |

| TM_102 | Invalid request parameters |

| TM_103 | Domain not verified |

| TM_104 | Rate limit exceeded |

| EM_104 | Success |

---

Guidelines

  1. Transactional only - Do not use for marketing or bulk promotional emails
  2. Verify domain first - Sender address must be from a verified domain
  3. Size limit - Total email size (headers + body + attachments) must not exceed 15 MB
  4. Batch limit - Maximum 500 recipients per batch request
  5. Use templates - For consistent emails, create templates in the dashboard
  6. Track reference - Use client_reference to correlate emails with your transactions
  7. TLS required - API only supports TLS v1.2+

More from this repository10