Поделиться через


Клиентская библиотека электронной почты связи Azure для JavaScript — версия 1.1.0

Этот пакет содержит пакет SDK для JavaScript/TypeScript для Служб коммуникации Azure для электронной почты.

Начало работы

Предпосылки

Вам потребуется подписка Azure, ресурс службы коммуникации и ресурс связи по электронной почте с активным доменом.

Чтобы создать эти ресурсы, можно использовать портал Azure, Azure PowerShell или клиентскую библиотеку управления .NET.

Установка

npm install @azure/communication-email

Примеры

EmailClient Предоставляет возможность отправки сообщений электронной почты.

Authentication

Почтовые клиенты могут проходить проверку подлинности с помощью строки подключения, полученной из коммуникационного ресурса Azure на портале Azure.

import { EmailClient } from "@azure/communication-email";

const connectionString = `endpoint=https://<resource-name>.communication.azure.com/;accessKey=<Base64-Encoded-Key>`;
const client = new EmailClient(connectionString);

Вы также можете пройти проверку подлинности в Azure Active Directory с помощью библиотеки Azure Identity. Чтобы использовать поставщик defaultAzureCredential, показанный ниже, или другие поставщики учетных данных, предоставленные пакетом Azure SDK, установите пакет :

npm install @azure/identity

Пакет @azure/identity предоставляет различные типы учетных данных, которые приложение может использовать для этого. Файл README для @azure/identity содержит больше информации и примеров, чтобы помочь вам начать работу. AZURE_CLIENT_SECRET, AZURE_CLIENT_ID и AZURE_TENANT_ID переменные среды необходимы для создания объекта DefaultAzureCredential.

import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";

const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);

Отправить сообщение по электронной почте

Чтобы отправить сообщение электронной почты, вызовите функцию beginSend из EmailClient. Это вернет поллер. Вы можете использовать этот поллер для проверки состояния операции и получения результата после ее завершения.

import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";

const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);

const message = {
  senderAddress: "sender@contoso.com",
  content: {
    subject: "This is the subject",
    plainText: "This is the body",
  },
  recipients: {
    to: [
      {
        address: "customer@domain.com",
        displayName: "Customer Name",
      },
    ],
  },
};

const poller = await client.beginSend(message);
const response = await poller.pollUntilDone();

Отправка сообщения электронной почты нескольким получателям

Чтобы отправить сообщение электронной почты нескольким получателям, добавьте объект для каждого типа получателя и объект для каждого получателя.

import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";

const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);

const message = {
  senderAddress: "sender@contoso.com",
  content: {
    subject: "This is the subject",
    plainText: "This is the body",
  },
  recipients: {
    to: [
      {
        address: "customer1@domain.com",
        displayName: "Customer Name 1",
      },
      {
        address: "customer2@domain.com",
        displayName: "Customer Name 2",
      },
    ],
    cc: [
      {
        address: "ccCustomer1@domain.com",
        displayName: " CC Customer 1",
      },
      {
        address: "ccCustomer2@domain.com",
        displayName: "CC Customer 2",
      },
    ],
    bcc: [
      {
        address: "bccCustomer1@domain.com",
        displayName: " BCC Customer 1",
      },
      {
        address: "bccCustomer2@domain.com",
        displayName: "BCC Customer 2",
      },
    ],
  },
};

const poller = await client.beginSend(message);
const response = await poller.pollUntilDone();

Отправка электронной почты с помощью вложений

Службы коммуникации Azure поддерживают отправку электронной почты с вложениями.

import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";
import { basename } from "node:path";
import { readFileSync } from "node:fs";

const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);

const filePath = "path/to/readme.txt";

const message = {
  senderAddress: "sender@contoso.com",
  content: {
    subject: "This is the subject",
    plainText: "This is the body",
  },
  recipients: {
    to: [
      {
        address: "customer@domain.com",
        displayName: "Customer Name",
      },
    ],
  },
  attachments: [
    {
      name: basename(filePath),
      contentType: "text/plain",
      contentInBase64: readFileSync(filePath, "base64"),
    },
  ],
};

const poller = await client.beginSend(message);
const response = await poller.pollUntilDone();

Отправка электронных писем с помощью встроенных вложений

Службы коммуникации Azure поддерживают отправку электронной почты со встроенными вложениями. Добавление необязательного contentId параметра в an attachment сделает его встроенным вложением.

import { DefaultAzureCredential } from "@azure/identity";
import { EmailClient } from "@azure/communication-email";
import { readFileSync } from "node:fs";

const endpoint = "https://<resource-name>.communication.azure.com";
const credential = new DefaultAzureCredential();
const client = new EmailClient(endpoint, credential);

const imageBuffer = readFileSync("path/to/my_inline_image.jpg");
const contentInBase64 = imageBuffer.toString("base64");

const message = {
  senderAddress: "sender@contoso.com",
  content: {
    subject: "This is the subject",
    plainText: "This is the body",
    html: '<html>This is the body<br /><img src="cid:inline_image" /></html>',
  },
  recipients: {
    to: [
      {
        address: "customer@domain.com",
        displayName: "Customer Name",
      },
    ],
  },
  attachments: [
    {
      name: "my_inline_image.jpg",
      contentType: "image/jpeg",
      contentInBase64: contentInBase64,
      contentId: "inline_image",
    },
  ],
};

const poller = await client.beginSend(message);
const response = await poller.pollUntilDone();

Устранение неполадок

Logging

Включение ведения журнала может помочь выявить полезные сведения о сбоях. Чтобы просмотреть журнал HTTP-запросов и ответов, задайте для переменной среды AZURE_LOG_LEVEL значение info. В альтернативном порядке, логирование можно включить во время выполнения, вызвав setLogLevel в @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Дальнейшие шаги

Contributing

Этот проект приветствует взносы и предложения. Большинство вкладов требуют, чтобы вы согласились с соглашением о лицензии участника (CLA), заявив, что у вас есть право, и на самом деле, предоставьте нам права на использование вашего вклада. Для получения подробной информации посетите cla.microsoft.com.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Для получения дополнительной информации см. FAQ о кодексе поведения, или свяжитесь с opencode@microsoft.com по любым дополнительным вопросам или комментариям.