Skip to content

Send Email

This step demonstrates how to use the Azure Communication Services (ACS) JavaScript SDK to send emails.

1. Prerequisites

  • Complete the Local Setup.
  • Have a verified domain in your ACS resource.

2. EmailClient Setup

Initialize the EmailClient using the connection string.

const { EmailClient } = require("@azure/communication-email");

const connectionString = process.env.COMMUNICATION_SERVICES_CONNECTION_STRING;
const emailClient = new EmailClient(connectionString);

3. Send a Simple Email

Provide the sender's email address, recipient's email address, subject, and message content.

async function sendSimpleEmail() {
  const message = {
    senderAddress: "<verified-sender-email-address>",
    content: {
      subject: "Hello from ACS Email SDK!",
      plainText: "This is a plain text email message sent with ACS JavaScript SDK."
    },
    recipients: {
      to: [{ address: "<recipient-email-address>" }]
    }
  };

  const poller = await emailClient.beginSend(message);
  const result = await poller.pollUntilDone();
  console.log(`Message ID: ${result.messageId}`);
}

sendSimpleEmail();

4. Send Email with HTML Body

You can send HTML-formatted emails by providing the html content.

async function sendHtmlEmail() {
  const message = {
    senderAddress: "<verified-sender-email-address>",
    content: {
      subject: "HTML Email from ACS Email SDK!",
      html: "<html><body><h1>Hello!</h1><p>This is an HTML email sent with ACS JavaScript SDK.</p></body></html>"
    },
    recipients: {
      to: [{ address: "<recipient-email-address>" }]
    }
  };

  const poller = await emailClient.beginSend(message);
  const result = await poller.pollUntilDone();
  console.log(`Message ID: ${result.messageId}`);
}

sendHtmlEmail();

5. Send with Attachments

To send an email with attachments, provide the attachments list in the message object.

const fs = require("fs");

async function sendEmailWithAttachment() {
  const fileContents = fs.readFileSync("sample.txt");
  const contentBytes = fileContents.toString("base64");

  const message = {
    senderAddress: "<verified-sender-email-address>",
    content: {
      subject: "Email with Attachment from ACS Email SDK!",
      plainText: "This email contains an attachment."
    },
    recipients: {
      to: [{ address: "<recipient-email-address>" }]
    },
    attachments: [
      {
        name: "sample.txt",
        contentType: "text/plain",
        contentInBase64: contentBytes
      }
    ]
  };

  const poller = await emailClient.beginSend(message);
  const result = await poller.pollUntilDone();
  console.log(`Message ID: ${result.messageId}`);
}

sendEmailWithAttachment();

6. Poll for Delivery Status

The beginSend method returns a poller object that you can use to check the status of the email delivery.

async function pollForStatus() {
  const poller = await emailClient.beginSend(message);

  // You can also manually check the status
  const state = poller.getOperationState();
  console.log(`Current status: ${state.status}`);

  const result = await poller.pollUntilDone();
  console.log(`Status of email send: ${result.status}`);
}

Full Code Example

Create a file named send_email.js with the following content:

const { EmailClient } = require("@azure/communication-email");

async function main() {
  try {
    const connectionString = process.env.COMMUNICATION_SERVICES_CONNECTION_STRING;
    if (!connectionString) {
      console.log("Please set the COMMUNICATION_SERVICES_CONNECTION_STRING environment variable.");
      return;
    }

    const emailClient = new EmailClient(connectionString);

    const message = {
      senderAddress: "<verified-sender-email-address>",
      content: {
        subject: "Hello from ACS Email SDK tutorial!",
        plainText: "This is a message sent from the ACS JavaScript SDK tutorial."
      },
      recipients: {
        to: [{ address: "<recipient-email-address>" }]
      }
    };

    const poller = await emailClient.beginSend(message);
    const result = await poller.pollUntilDone();
    console.log(`Message ID: ${result.messageId}`);

  } catch (error) {
    console.error(`Exception: ${error.message}`);
  }
}

main();

See Also

Sources