SMTP API

Our SMTP API allows you to send email transmissions directly from your own mail server (or client). It acts as an intermediary, receiving your SMTP commands, constructing a mail object, and then processing it for transmission creation.
 

Our SMTP API accepts connections on the following ports:

  • 25: Unencrypted
  • 465: SSL
  • 587: STARTTLS
 

 

Sending an Email using SMTP API

This guide outlines the steps to connect and send your first email using our SMTP API. We'll walk you through a basic SMTP transaction using the openssl s_client command-line tool for demonstration purposes.
 

For sample code in various languages like Java, Python, Node.js, and Go, check out our GitHub repository.

1. Establish a Secure Connection:

openssl s_client -connect smtp-campaigns.zoho.com:587 -starttls smtp -ign_eof -crlf

This command connects to the Zoho Campaigns server on port 587 (standard for secure SMTP) and initiates a TLS handshake using the STARTTLS extension. The -ign_eof option ensures the command doesn't terminate prematurely, and -crlf specifies using CRLF (carriage return, line feed) as the line terminator.

2. Identify Yourself:

EHLO zylker.com


Send the EHLO command followed by your domain name (zylker.com in this example). This introduces your client to the server.
Use the command to send the access token generated using OAuth 2.0 (refer to API documentation for details on obtaining the token)
 

3. Authenticate with Access Token:

Use the AUTH LOGIN  command to send the access token generated using OAuth 2.0 (refer to Authentication section of the API documentation here).
 

AUTH LOGIN

334 Username

YXBpa2V5 // base64 encoded value for the string "apikey"

334 Password

MTAwMC4qKioqKioqKioqKioqLioqKioqKio= // base64 encoded password

235 Continue with the mail


4. Specify the Sender:

Use the MAIL FROM command to specify the email address of the sender. Enclose the address in angle brackets < >.

MAIL FROM:<aaron@zylker.com>

250 2.1.0 Sender <aaron@zylker.com> OK

 

5. Add Recipients:

Use the RCPT TO command for each recipient address. You can add up to 10,000 recipients per email. Enclose each address in angle brackets.

RCPT TO:<aaron.test@gmail.com>

250 2.1.5 Recipient <aaron.test@gmail.com> OK

RCPT TO:<ea.test@zylker.com>

250 2.1.5 Recipient <ea.test@zylker.com> OK

 

6. Compose the Email (DATA):

  • Use the DATA command to indicate the start of the email content.
  • Provide the email subject on a separate line.
  • Add the email body content.
  • Include any optional email metadata prefixed with X-ZCEA-SMTP-DATA: (refer to API documentation for supported metadata).
  • End the email content with a single dot (.) on a new line to signal the end of the message.

 

DATA

354 Ok Send data ending with <CRLF>.<CRLF>

Subject: My first mail using Zoho Campaigns Email API SMTP

X-ZCEA-SMTP-DATA:{"campaign_name":"Summer is here","recipient_data":{"aaron.test@gmail.com":{"name":"Aaron Fletcher","additional_data":{"phone":"+91231241444","country":"CA"},"merge_data":{"first_name":"Aaron"}},"ea.test@zylker.com":{"name":"EA Test","additional_data":{"phone":"+9198762313210","country":"CA"},"merge_data":{"first_name":"EA"}}},"from":{"address":"aaron@zylker.com","name":"Aron Fletcher"}}

 

Summer Hot Savings, You DonWant to Miss.

7. Success:

Upon successful completion of these steps, the server will send a response indicating the email has been accepted or rejected. Refer to 'Error Codes' documentation for information on response codes.