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


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

В этом кратком руководстве описывается отправка электронной почты с помощью пакетов SDK для электронной почты.

Начните использовать Azure Communication Services, воспользовавшись функцией «Попробуйте отправить сообщения электронной почты» для отправки email-сообщений.

Предварительные условия

Завершение этой статьи обойдется вам в небольшую стоимость — несколько центов США или даже меньше в вашей учетной записи Azure.

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

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

Чтобы отправить сообщение получателю, а также указать тему и текст сообщения:

  1. На странице обзора подготовленного ресурса Службы коммуникации Azure щелкните " Попробовать электронную почту" на левой панели навигации в разделе "Электронная почта ".

    Снимок экрана: левая панель навигации для пробной почты.

  2. Выберите один из проверенных доменов в раскрывающемся списке.

    Снимок экрана: проверенный домен из раскрывающегося списка.

  3. Создание сообщения электронной почты для отправки.

    • Введите адрес электронной почты получателя
    • Ввод темы
    • Написание текста электронной почты

    Снимок экрана: фильтрация и выбор одного из проверенных доменов электронной почты для подключения.

  4. Нажмите Отправить.

    Снимок экрана: один из проверенных доменов электронной почты теперь подключен.

  5. Сообщение электронной почты успешно отправлено.

    Снимок экрана: успешная отправка электронной почты.

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

    • Выбор выбранного языка

    • Нажмите кнопку "Вставка подключения"

    • Нажмите кнопку "Копировать"

      Снимок экрана: фрагмент кода для отправки сообщения электронной почты.

  7. Фрагмент кода электронной почты теперь готов к использованию в проекте уведомлений.

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

Завершение этой статьи обойдется вам в небольшую стоимость — несколько центов США или даже меньше в вашей учетной записи Azure.

Необходимые компоненты

Проверка предварительных условий

  • В окне терминала или командной строки выполните az --version команду, чтобы проверить, установлен ли Azure CLI и расширение связи.
  • Чтобы просмотреть домены, проверенные ресурсом Служб коммуникации электронной почты, войдите в портал Azure. Найдите ресурс Служб коммуникации электронной почты и откройте вкладку "Подготовка доменов " в области навигации слева.

Установка

Добавление расширения

Добавьте расширение Службы коммуникации Azure для Azure CLI с помощью az extension команды.

az extension add --name communication

Вход в Azure CLI

Вам нужно войти в Azure CLI. Вы можете войти в систему, выполнив команду az login в терминале и предоставив свои учетные данные.

Сохранение строки подключения в переменной среды

Вы можете настроить AZURE_COMMUNICATION_CONNECTION_STRING переменную среды для использования операций ключей Azure CLI без необходимости --connection_string передавать строка подключения. Чтобы настроить переменную среды, откройте окно консоли и выберите операционную систему на следующих вкладках. Замените <connectionString> фактической строкой подключения.

Примечание.

Не сохраняйте строку подключения в виде незашифрованной переменной среды для продуктивных сред. Этот метод предназначен только для тестирования. Для рабочих сред необходимо создать новые строки подключения. Мы рекомендуем шифровать строки подключения и регулярно изменять их.

setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"

После добавления переменной среды может потребоваться перезапустить все запущенные программы, которые должны считывать переменную среды, включая окно консоли. Например, если вы используете Visual Studio в качестве редактора, перезапустите Visual Studio перед запуском примера.

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

az communication email send
	--connection-string "yourConnectionString"
	--sender "<[email protected]>"
	--to "<[email protected]>"
	--subject "Welcome to Azure Communication Services Email" --text "This email message is sent from Azure Communication Services Email using Azure CLI." 

Выполните следующие замены в коде:

  • Замените <yourConnectionString> строка подключения.
  • Замените <[email protected]> адрес электронной почты, на который вы хотите отправить сообщение.
  • Замените <[email protected]> на адрес MailFrom вашего подтвержденного домена.

Эта команда также выполняет опрос на messageId и возвращает состояние доставки электронной почты. Состояние может быть одним из следующих значений:

Название статуса Описание
Не начато В настоящее время мы не отправляем это сообщение из нашего сервиса.
Бег Операция отправки электронной почты в настоящее время выполняется и обрабатывается.
Успешно Операция отправки электронной почты завершена без ошибок, и сообщение электронной почты находится в процессе доставки. Любое подробное состояние доставки электронной почты за пределами этого этапа можно получить через Azure Monitor или через Сетка событий Azure. Узнайте, как подписаться на события электронной почты.
Неудачно Операция отправки электронной почты не выполнена и возникла ошибка. Сообщение электронной почты не отправлено. Результат содержит объект ошибки с дополнительными сведениями о причине сбоя.

Необязательные параметры

Следующие необязательные параметры доступны в Azure CLI.

  • --html можно использовать вместо --text html-текста электронной почты.

  • --importance задает тип важности для сообщения электронной почты. Известные значения: высокий, нормальный и низкий. По умолчанию установлен нормальный режим.

  • --to задает список получателей электронной почты.

  • --cc задает адреса электронной почты для углеродного копирования.

  • --bcc задает адреса электронной почты для скрытой копии.

  • --reply-to задает адрес электронной почты для ответа на сообщение.

  • --disable-tracking указывает, следует ли отключить отслеживание взаимодействия пользователей для этого запроса.

  • --attachments задает список вложений электронной почты.

  • --attachment-types задает список типов вложений электронной почты в том же порядке вложений.

Вы также можете использовать список получателей с --cc и --bcc, аналогичных --to. Должен быть по крайней мере один получатель в --to или --cc или --bcc.

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

Совет

Начните свой опыт отправки электронной почты с Azure Communication Services, перейдя напрямую к примерам базовой отправки электронной почты и расширенной отправки электронной почты на GitHub.

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

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

Имя Описание
Электронный адрес Этот класс содержит адрес электронной почты и параметр отображаемого имени.
Вложение электронной почты Этот класс создает вложение электронной почты, принимая уникальный идентификатор, строку типа MIME вложения электронной почты, двоичные данные для содержимого и необязательный идентификатор содержимого, чтобы определить его как встроенное вложение.
EmailClient Этот класс требуется для реализации всех функций электронной почты. Вы создаете объект с помощью строки подключения и используете его для отправки сообщений электронной почты.
Настройки почтового клиента Этот класс можно добавить в экземпляр EmailClient для конкретной версии API.
СодержимоеПисьма Этот класс содержит тему и содержимое сообщения электронной почты. Необходимо указать по крайней мере один из вариантов контента: PlainText или Html.
Пользовательский заголовок электронной почты Этот класс позволяет добавить пару имени и значения для настраиваемого заголовка. Важность электронной почты также можно указать с помощью этих заголовков с помощью имени заголовка x-priority или x-msmail-priority.
Электронное сообщение Этот класс объединяет отправителя, содержимое и получателей. Также можно добавить пользовательские заголовки, вложения и адреса электронной почты с ответом.
Получатели электронной почты Этот класс содержит списки объектов EmailAddress для получателей сообщения электронной почты, включая необязательные списки для получателей CC и BCC.
ОперацияОтправкиЭлектроннойПочты Этот класс представляет асинхронную операцию отправки электронной почты и возвращается из вызова API отправки электронной почты.
РезультатОтправкиЭлектроннойПочты Этот класс содержит результаты операции отправки электронной почты. Он имеет идентификатор операции, состояние операции и объект ошибки (если применимо).

EmailSendResult возвращает следующее состояние операции электронной почты.

Состояние Описание
Не начато В настоящее время мы не отправляем этот статус из нашего сервиса.
Запуск Операция отправки электронной почты в настоящее время выполняется и обрабатывается.
Успешно Операция отправки электронной почты завершается без ошибок, и письмо отправлено на доставку. Любое подробное состояние доставки электронной почты за пределами этого этапа можно получить через Azure Monitor или через Сетка событий Azure. Узнайте, как подписаться на события электронной почты
Неудачно Операция отправки электронной почты не прошла успешно и возникла ошибка. Сообщение не было отправлено. Результат содержит объект ошибки с дополнительными сведениями о причине сбоя.

Предварительные условия

Завершение этой статьи обойдется вам в небольшую стоимость — несколько центов США или даже меньше в вашей учетной записи Azure.

Примечание.

Вы также можете отправить сообщение электронной почты из собственного проверенного домена. Добавьте настраиваемые проверенные домены в службу коммуникации электронной почты.

Проверка предварительных условий

  • В окне терминала или команды выполните команду dotnet, чтобы проверить, установлена ли клиентская библиотека .NET.
  • Чтобы посмотреть поддомены, связанные с ресурсом Службы электронной почты, войдите на портал Azure, перейдите к ресурсу Службы электронной почты и откройте вкладку Подготовка доменов в панели навигации слева.

Создание нового приложения C#

В окне консоли (cmd, PowerShell или Bash) выполните команду dotnet new, чтобы создать консольное приложение с именем EmailQuickstart. Эта команда создает простой проект "Hello World" на языке C# с одним файлом исходного кода Program.cs.

dotnet new console -o EmailQuickstart

Измените каталог на только что созданную папку приложения и выполните команду dotnet build, чтобы скомпилировать приложение.

cd EmailQuickstart
dotnet build

Установка пакета

Находясь в каталоге приложения, установите клиентскую библиотеку электронной почты Azure Communication Services для .NET с помощью команды dotnet add package.

dotnet add package Azure.Communication.Email

Создание клиента электронной почты с проверкой подлинности

Откройте Program.cs и замените существующий код следующим образом, чтобы добавить using директивы для включения Azure.Communication.Email пространства имен и отправной точки для запуска программы.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

using Azure;
using Azure.Communication.Email;

namespace SendEmail
{
  internal class Program
  {
    static async Task Main(string[] args)
    {

    }
  }
}

Существует несколько различных вариантов проверки подлинности клиента электронной почты:

Откройте Program.cs в текстовом редакторе и замените текст метода Main кодом, чтобы инициализировать EmailClient с помощью строки подключения. Следующий код извлекает строку подключения для ресурса из переменной среды под именемCOMMUNICATION_SERVICES_CONNECTION_STRING. Узнайте, как управлять строкой подключения вашего ресурса.

// This code demonstrates how to fetch your connection string
// from an environment variable.
string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
EmailClient emailClient = new EmailClient(connectionString);

Примечание.

Мы не рекомендуем использовать опрос вручную (отправить электронную почту с асинхронным опросом состояния) для отправки электронной почты.

Базовая отправка электронной почты

Создание сообщения электронной почты

Чтобы отправить сообщение электронной почты, необходимо:

  • Определите тему и текст электронной почты.
  • Определите Адрес отправителя. Создайте сообщение электронной почты, используя информацию об отправителе и получая адрес MailFrom из вашего проверенного домена.
  • Определите адрес получателя.
  • Вызовите метод SendAsync. Добавьте следующий код в конец метода Main в Program.cs:

Замените сведения о домене своими и измените содержимое, сведения о получателе по мере необходимости


//Replace with your domain and modify the content, recipient details as required

var subject = "Welcome to Azure Communication Service Email APIs.";
var htmlContent = "<html><body><h1>Quick send email test</h1><br/><h4>This email message is sent from Azure Communication Service Email.</h4><p>This mail was sent using .NET SDK!!</p></body></html>";
var sender = "[email protected]";
var recipient = "[email protected]";

Отправка и получение статуса отправки электронной почты

При вызове SendAsync с помощью Azure.WaitUntil.Started метод возвращается обратно после запуска операции. Метод возвращает объект EmailSendOperation. Чтобы обновить состояние операции электронной почты, можно вызвать метод UpdateStatusAsync.

Возвращенный объект EmailSendOperation содержит объект EmailSendStatus, содержащий:

  • Текущее состояние операции отправки электронной почты.
  • Объект ошибки с сведениями о сбое, если текущее состояние находится в состоянии сбоя.

/// Send the email message with WaitUntil.Started
EmailSendOperation emailSendOperation = await emailClient.SendAsync(
    Azure.WaitUntil.Started,
    sender,
    recipient,
    subject,
    htmlContent);

/// Call UpdateStatus on the email send operation to poll for the status
/// manually.
try
{
    while (true)
    {
        await emailSendOperation.UpdateStatusAsync();
        if (emailSendOperation.HasCompleted)
        {
            break;
        }
        await Task.Delay(100);
    }

    if (emailSendOperation.HasValue)
    {
        Console.WriteLine($"Email queued for delivery. Status = {emailSendOperation.Value.Status}");
    }
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"Email send failed with Code = {ex.ErrorCode} and Message = {ex.Message}");
}

/// Get the OperationId so that it can be used for tracking the message for troubleshooting
string operationId = emailSendOperation.Id;
Console.WriteLine($"Email operation id = {operationId}");

Запустите приложение из каталога приложения с помощью команды dotnet run.

dotnet run

Пример кода

Пример приложения можно скачать в репозитории GitHub.

Начните работу со службами связи Azure, используя JavaScript-библиотеку клиента для отправки электронных писем.

Совет

Переход к отправке электронной почты с помощью Служб коммуникации Azure с помощью примера кода отправки электронной почты ирасширенной отправки электронной почты на GitHub.

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

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

Имя Описание
EmailAddress Этот класс содержит адрес электронной почты и параметр отображаемого имени.
Вложение электронной почты Этот класс создает вложение электронной почты, принимая уникальный идентификатор, строку типа MIME вложения электронной почты, двоичные данные для содержимого и необязательный идентификатор содержимого, чтобы определить его как встроенное вложение.
EmailClient Этот класс требуется для реализации всех функций электронной почты. Вы создаете его с помощью строки подключения и используете для отправки сообщений электронной почты.
ОпцииЭлектроннойПочтыКлиента Этот класс можно добавить в экземпляр EmailClient для конкретной версии API.
Содержимое письма Этот класс содержит тему и текст сообщения электронной почты. Необходимо указать хотя бы один тип содержимого: PlainText или Html.
Настраиваемый заголовок электронной почты Этот класс позволяет добавить пару имени и значения для настраиваемого заголовка. Важность электронной почты также можно указать с помощью этих заголовков, используя имя заголовка x-priority или x-msmail-priority.
Электронное письмо Этот класс объединяет отправителя, содержимое и получателей. Также можно добавить пользовательские заголовки, вложения и адреса электронной почты с ответом.
Получатели электронной почты Этот класс содержит списки объектов EmailAddress для получателей сообщения электронной почты, включая необязательные списки для получателей CC и BCC.
РезультатОтправкиЭлектроннойПочты Этот класс содержит результаты операции отправки электронной почты. Он имеет идентификатор операции, состояние операции и объект ошибки (если применимо).
СтатусОтправкиПисьма Этот класс представляет набор состояний операции отправки электронной почты.

EmailSendResult возвращает следующее состояние операции электронной почты.

Название статуса Описание
isStarted Возвращает значение true, если операция отправки электронной почты в настоящее время выполняется и обрабатывается.
выполнено Возвращает истину, если операция отправки электронной почты завершена без ошибок и сообщение электронной почты отправлено на доставку. Любое подробное состояние доставки электронной почты за пределами этого этапа можно получить через Azure Monitor или через Сетка событий Azure. Узнайте, как подписаться на события электронной почты
result Свойство, которое существует, если операция отправки электронной почты завершается.
ошибка Свойство, которое существует, если операция отправки электронной почты не была успешной и возникла ошибка. Сообщение не было отправлено. Результат содержит объект ошибки с дополнительными сведениями о причине сбоя.

Предварительные требования

Завершение этой статьи обойдется вам в небольшую стоимость — несколько центов США или даже меньше в вашей учетной записи Azure.

Примечание.

Вы также можете отправить сообщение электронной почты из собственного проверенного домена. Добавьте собственные проверенные домены в службу электронной почты.

Проверка предварительных условий

  • В терминале или командном окне воспользуйтесь node --version, чтобы проверить, установлен ли пакет Node.js.
  • Чтобы посмотреть домены, проверенные ресурсом Служб коммуникации, войдите на портал Azure, перейдите к ресурсу коммуникации электронной почты и откройте вкладку Подготовка доменов в области навигации слева.

Настройка среды приложения

Создание нового приложения Node.js

Сначала откройте терминал или командное окно. Затем создайте новый каталог для приложения и перейдите к нему.

mkdir email-quickstart && cd email-quickstart

Выполните команду npm init -y, чтобы создать файл package.json с параметрами по умолчанию.

npm init -y

Используйте текстовый редактор, чтобы создать файл с именем send-email.js в корневой директории проекта. Измените свойство main в package.json на send-email.js. В следующем разделе показано, как добавить исходный код для этой статьи в только что созданный файл.

Установка пакета

Используйте команду npm install, чтобы установить клиентскую библиотеку Служб коммуникации электронной почты для JavaScript.

npm install @azure/communication-email --save

В параметре --save библиотека указывается в качестве зависимости в файле package.json.

Создание клиента электронной почты с проверкой подлинности

Существует несколько различных вариантов проверки подлинности клиента электронной почты:

EmailClient Импортируйте из клиентской библиотеки и создайте его экземпляр с помощью строки подключения.

Используйте следующий код, чтобы получить строку подключения для ресурса из переменной среды с именем COMMUNICATION_SERVICES_CONNECTION_STRING пакета dotenv. С помощью команды npm install установите пакет dotenv. Узнайте, как управлять строкой подключения ресурса.

npm install dotenv

Добавьте следующий код в send-email.js:

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

// This code demonstrates how to fetch your connection string
// from an environment variable.
const connectionString = process.env['COMMUNICATION_SERVICES_CONNECTION_STRING'];
const emailClient = new EmailClient(connectionString);

Для простоты в этой статье используются строки подключения, но в производственных средах рекомендуется использовать учетные записи службы.

Базовая отправка электронной почты

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

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


async function main() {
  const POLLER_WAIT_TIME = 10
  try {
    const message = {
      senderAddress: "<[email protected]>",
      content: {
        subject: "Welcome to Azure Communication Services Email",
        plainText: "This email message is sent from Azure Communication Services Email using the JavaScript SDK.",
      },
      recipients: {
        to: [
          {
            address: "<[email protected]>",
            displayName: "Customer Name",
          },
        ],
      },
    };

    const poller = await emailClient.beginSend(message);

    if (!poller.getOperationState().isStarted) {
      throw "Poller was not started."
    }

    let timeElapsed = 0;
    while(!poller.isDone()) {
      poller.poll();
      console.log("Email send polling in progress");

      await new Promise(resolve => setTimeout(resolve, POLLER_WAIT_TIME * 1000));
      timeElapsed += 10;

      if(timeElapsed > 18 * POLLER_WAIT_TIME) {
        throw "Polling timed out.";
      }
    }

    if(poller.getResult().status === KnownEmailSendStatus.Succeeded) {
      console.log(`Successfully sent the email (operation id: ${poller.getResult().id})`);
    }
    else {
      throw poller.getResult().error;
    }
  } catch (e) {
    console.log(e);
  }
}

main();

Выполните следующие замены в коде:

  • Замените <[email protected]> адрес электронной почты, на который вы хотите отправить сообщение.
  • Замените <[email protected]> адрес MailFrom проверенного домена.

Выполнение кода

Используйте команду узла, чтобы запустить код, добавленный в send-email.js файл.

node ./send-email.js

Пример кода

Вы можете скачать образец приложения из GitHub Azure Samples Send Email для JavaScript.

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

Совет

Переход к отправке электронной почты с помощью служб коммуникации Azure с помощью примера кода "Базовая отправка электронной почты " и " Расширенная отправка электронной почты " на сайте GitHub.

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

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

Имя Описание
EmailAddress Этот класс содержит адрес электронной почты и параметр отображаемого имени.
Вложение электронной почты Этот интерфейс создает вложение электронной почты, принимая уникальный идентификатор, строку MIME-типа вложения электронной почты, строку, содержащую байты содержимого, и необязательный идентификатор содержимого, чтобы определить его как встроенное вложение.
EmailClient Этот класс требуется для реализации всех функций электронной почты. Вы создаете его с помощью строки подключения и используете для отправки сообщений электронной почты.
EmailMessage Этот класс объединяет отправителя, содержимое и получателей. Также можно добавить пользовательские заголовки, вложения и адреса электронной почты с ответом.
РезультатОтправкиЭлектронногоПисьма Этот класс содержит результаты операции отправки электронной почты. Он имеет идентификатор операции, состояние операции и объект ошибки (если применимо).
СтатусОтправкиПисьма Этот класс представляет набор состояний операции отправки электронной почты.

EmailSendResult возвращает следующее состояние операции электронной почты.

Название статуса Описание
НЕ_НАЧАТО Сейчас мы не отправляем этот статус из нашего сервиса.
В процессе Операция отправки электронной почты в настоящее время выполняется и обрабатывается.
УСПЕШНО_ЗАВЕРШЕНО Операция отправки электронной почты завершена без ошибок, и сообщение электронной почты находится в процессе доставки. Любое подробное состояние доставки электронной почты за пределами этого этапа можно получить через Azure Monitor или через Сетка событий Azure. Узнайте, как подписаться на события электронной почты
ПРОВАЛ Операция отправки электронной почты не прошла успешно и возникла ошибка. Сообщение не было отправлено. Результат содержит объект ошибки с дополнительными сведениями о причине сбоя.

Предварительные условия

Завершение этой статьи обойдется вам в небольшую стоимость — несколько центов США или даже меньше в вашей учетной записи Azure.

Примечание.

Вы также можете отправить сообщение электронной почты из собственного проверенного домена : создание ресурсов службы коммуникации электронной почты и управление ими.

Проверка предварительных условий

  • В окне терминала или командной строки выполните команду mvn -v , чтобы проверить, установлен ли Maven.
  • Чтобы просмотреть домены, проверенные ресурсом Служб коммуникации электронной почты, войдите в портал Azure. Найдите ресурс Служб коммуникации электронной почты и откройте вкладку "Подготовка доменов " на левой панели навигации.

Настройка среды приложения

Чтобы настроить среду для отправки сообщений электронной почты, выполните действия, описанные в следующих разделах.

Создание нового приложения Java

Откройте терминал или командное окно и перейдите в каталог, в котором необходимо создать приложение Java. Выполните следующую команду, чтобы создать проект Java из шаблона maven-archetype-quickstart.

mvn archetype:generate -DarchetypeArtifactId="maven-archetype-quickstart" -DarchetypeGroupId="org.apache.maven.archetypes" -DarchetypeVersion="1.4" -DgroupId="com.communication.quickstart" -DartifactId="communication-quickstart"

Цель generate создает каталог с тем же именем, что и значение artifactId. В этом каталоге каталог src/main/java содержит исходный код проекта, каталог src/test/java содержит источник теста, а файл pom.xml — объектную модель проекта проекта (POM).

Установка пакета

Откройте файл pom.xml в текстовом редакторе. Добавьте приведенный ниже элемент зависимости в группу зависимостей.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-email</artifactId>
    <version>1.0.0-beta.2</version>
</dependency>

Настройка платформы приложения

Откройте /src/main/java/com/communication/quickstart/App.java в текстовом редакторе, добавьте директивы импорта и удалите инструкцию System.out.println("Hello world!"); :

package com.communication.quickstart;

import com.azure.communication.email.models.*;
import com.azure.communication.email.*;
import com.azure.core.util.polling.*;

public class App
{
    public static void main( String[] args )
    {
        // Quickstart code goes here.
    }
}

Создание клиента электронной почты с проверкой подлинности

Существует несколько различных вариантов проверки подлинности клиента электронной почты.

Чтобы выполнить проверку подлинности клиента, создайте экземпляр EmailClient с вашей строкой подключения. Узнайте, как управлять строкой подключения ресурса. Вы также можете инициализировать клиент с помощью любого пользовательского HTTP-клиента, реализующего com.azure.core.http.HttpClient интерфейс.

Чтобы создать экземпляр синхронного клиента, добавьте следующий код в main метод:

// You can get your connection string from your resource in the Azure portal.
String connectionString = "endpoint=https://<resource-name>.communication.azure.com/;accesskey=<access-key>";

EmailClient emailClient = new EmailClientBuilder()
    .connectionString(connectionString)
    .buildClient();

Чтобы создать экземпляр асинхронного клиента, добавьте следующий код в main метод:

// You can get your connection string from your resource in the Azure portal.
String connectionString = "endpoint=https://<resource-name>.communication.azure.com/;accesskey=<access-key>";

EmailAsyncClient emailClient = new EmailClientBuilder()
    .connectionString(connectionString)
    .buildAsyncClient();

Для простоты в этой статье используются строки подключения, но в рабочих средах рекомендуется использовать субъекты-службы.

Базовая отправка электронной почты

Вы можете создать сообщение электронной почты с помощью EmailMessage объекта в пакете SDK.

EmailMessage message = new EmailMessage()
    .setSenderAddress("<[email protected]>")
    .setToRecipients("<[email protected]>")
    .setSubject("Welcome to Azure Communication Services Email")
    .setBodyPlainText("This email message is sent from Azure Communication Services Email using the Java SDK.");

Выполните следующие замены в коде:

  • Замените <[email protected]> адрес электронной почты, на который вы хотите отправить сообщение.
  • Замените <[email protected]> адрес MailFrom проверенного домена.

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

Вызов beginSend клиента синхронизации возвращает SyncPoller объект, который можно использовать для проверки состояния операции и получения результата после завершения. Первоначальный запрос на отправку сообщения электронной почты начинается, как только вызывается метод beginSend. Отправка сообщения электронной почты является длительной операцией. Важно отметить, что метод getFinalResult() в poller является блокирующей операцией до тех пор, пока не достигнуто терминальное состояние (SUCCESSFULLY_COMPLETED или FAILED). Рекомендуется выполнять опрос вручную через интервал, соответствующий потребностям приложения, как показано в следующем примере.

try
{
    SyncPoller<EmailSendResult, EmailSendResult> poller = emailClient.beginSend(message, null); // This will send out the initial request to send an email

    PollResponse<EmailSendResult> pollResponse = null;

    Duration timeElapsed = Duration.ofSeconds(0);
    Duration POLLER_WAIT_TIME = Duration.ofSeconds(10);

    // Polling is done manually to avoid blocking the application in case of an error
    while (pollResponse == null
            || pollResponse.getStatus() == LongRunningOperationStatus.NOT_STARTED
            || pollResponse.getStatus() == LongRunningOperationStatus.IN_PROGRESS)
    {
        pollResponse = poller.poll();
        // The operation ID can be retrieved as soon as .poll() is called on the poller
        System.out.println("Email send poller status: " + pollResponse.getStatus() + ", operation id: " + pollResponse.getValue().getId());

        Thread.sleep(POLLER_WAIT_TIME.toMillis());
        timeElapsed = timeElapsed.plus(POLLER_WAIT_TIME);

        if (timeElapsed.compareTo(POLLER_WAIT_TIME.multipliedBy(18)) >= 0)
        {
            throw new RuntimeException("Polling timed out.");
        }
    }

    if (poller.getFinalResult().getStatus() == EmailSendStatus.SUCCEEDED)
    {
        System.out.printf("Successfully sent the email (operation id: %s)", poller.getFinalResult().getId());
    }
    else
    {
        throw new RuntimeException(poller.getFinalResult().getError().getMessage());
    }
}
catch (Exception exception)
{
    System.out.println(exception.getMessage());
}

Выполнение кода

  1. Перейдите в каталог, содержащий pom.xml файл, и скомпилируйте проект с помощью mvn команды.

    mvn compile
    
  2. Создайте пакет.

    mvn package
    
  3. Выполните следующую mvn команду, чтобы запустить приложение.

    mvn exec:java -D"exec.mainClass"="com.communication.quickstart.App" -D"exec.cleanupDaemonThreads"="false"
    

Пример кода

Пример приложения можно скачать из раздела Azure Samples на GitHub Отправить Email для Java

Начните работу с Azure Communication Services, используя SDK для электронной почты на Python для отправки сообщений электронной почты.

Совет

Начните работу с отправкой электронной почты с помощью служб связи Azure, изучив примеры кода на GitHub: Базовая отправка электронной почты и Расширенная отправка электронной почты.

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

В следующем шаблоне сообщения JSON и объекте ответа демонстрируются некоторые основные функции пакета SDK для электронной почты Службы коммуникации Azure для Python.

message = {
    "content": {
        "subject": "str",  # Subject of the email message. Required.
        "html": "str",  # Optional. Html version of the email message.
        "plainText": "str"  # Optional. Plain text version of the email
            message.
    },
    "recipients": {
        "to": [
            {
                "address": "str",  # Email address. Required.
                "displayName": "str"  # Optional. Email display name.
            }
        ],
        "bcc": [
            {
                "address": "str",  # Email address. Required.
                "displayName": "str"  # Optional. Email display name.
            }
        ],
        "cc": [
            {
                "address": "str",  # Email address. Required.
                "displayName": "str"  # Optional. Email display name.
            }
        ]
    },
    "senderAddress": "str",  # Sender email address from a verified domain. Required.
    "attachments": [
        {
            "contentInBase64": "str",  # Base64 encoded contents of the attachment. Required.
            "contentType": "str",  # MIME type of the content being attached. Required.
            "name": "str"  # Name of the attachment. Required.
        }
    ],
    "userEngagementTrackingDisabled": bool,  # Optional. Indicates whether user engagement tracking should be disabled for this request if the resource-level user engagement tracking setting was already enabled in the control plane.
    "headers": {
        "str": "str"  # Optional. Custom email headers to be passed.
    },
    "replyTo": [
        {
            "address": "str",  # Email address. Required.
            "displayName": "str"  # Optional. Email display name.
        }
    ]
}

response = {
    "id": "str",  # The unique id of the operation. Uses a UUID. Required.
    "status": "str",  # Status of operation. Required. Known values are:
        "NotStarted", "Running", "Succeeded", and "Failed".
    "error": {
        "additionalInfo": [
            {
                "info": {},  # Optional. The additional info.
                "type": "str"  # Optional. The additional info type.
            }
        ],
        "code": "str",  # Optional. The error code.
        "details": [
            ...
        ],
        "message": "str",  # Optional. The error message.
        "target": "str"  # Optional. The error target.
    }
}

Значения response.status описаны далее в следующей таблице.

Название статуса Описание
InProgress Операция отправки электронной почты в настоящее время выполняется и обрабатывается.
Успешно Операция отправки электронной почты завершена без ошибок, и сообщение электронной почты находится в процессе доставки. Любое подробное состояние доставки электронной почты за пределами этого этапа можно получить через Azure Monitor или через Сетка событий Azure. Узнайте, как подписаться на события электронной почты
Неудачно Операция отправки электронной почты не прошла успешно и возникла ошибка. Сообщение не было отправлено. Результат содержит объект ошибки с дополнительными сведениями о причине сбоя.

Предварительные условия

Завершение этой статьи обойдется вам в небольшую стоимость — несколько центов США или даже меньше в вашей учетной записи Azure.

Примечание.

Мы также можем отправить сообщение электронной почты из собственного проверенного домена. Добавьте настраиваемые проверенные домены в службу электронной почты.

Проверка предварительных условий

  • В окне терминала или команды выполните команду python --version, чтобы проверить, установлен ли пакет Python.
  • Чтобы просмотреть домены, проверенные ресурсом Служб коммуникации электронной почты, войдите в портал Azure. Найдите ресурс Служб коммуникации электронной почты и откройте вкладку "Подготовка доменов " в области навигации слева.

Настройка среды приложения

Чтобы настроить среду для отправки сообщений электронной почты, выполните действия, описанные в следующих разделах.

Создание приложения Python

  1. Откройте терминал или командное окно. Затем выполните следующую команду, чтобы создать виртуальную среду и активировать ее. Эта команда создает новый каталог для приложения.

    python -m venv email-quickstart
    
  2. Перейдите в корневой каталог виртуальной среды и активируйте его с помощью следующих команд.

    cd email-quickstart
    .\Scripts\activate
    
  3. Используйте текстовый редактор, чтобы создать файл с именем send-email.py в корневом каталоге проекта и добавить структуру для программы, включая базовую обработку исключений.

    import os
    from azure.communication.email import EmailClient
    
    try:
        # Quickstart code goes here.
    except Exception as ex:
        print('Exception:')
        print(ex)
    

В следующих разделах вы добавите весь исходный код для этого краткого руководства в файл send-email.py, который вы создали.

Установка пакета

Находясь в каталоге приложения, установите пакет SDK для электронной почты Azure Communication Services для Python, используя следующую команду.

pip install azure-communication-email

Создание клиента электронной почты с проверкой подлинности

Существует несколько различных вариантов проверки подлинности клиента электронной почты:

Создайте экземпляр EmailClient с помощью строки подключения. Узнайте, как управлять строкой подключения вашего ресурса.

# Create the EmailClient object that you use to send Email messages.
email_client = EmailClient.from_connection_string(<connection_string>)

Для простоты в этой статье используются строки подключения, но в рабочих средах рекомендуется использовать сервисные учетные записи.

Базовая отправка электронной почты

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

Чтобы отправить сообщение электронной почты, необходимо:

  • Создайте сообщение со следующими значениями:
    • senderAddress: допустимый адрес электронной почты отправителя, найденный в поле MailFrom в панели обзора домена, связанного с ресурсом служб коммуникации электронной почты.
    • recipients: объект со списком получателей электронной почты, а также списки получателей электронной почты CC и BCC.
    • content: объект, содержащий тему, и при необходимости обычный текст или HTML-содержимое сообщения электронной почты.
  • begin_send Вызовите метод, который возвращает результат операции.
message = {
    "content": {
        "subject": "This is the subject",
        "plainText": "This is the body",
        "html": "<html><h1>This is the body</h1></html>"
    },
    "recipients": {
        "to": [
            {
                "address": "<[email protected]>",
                "displayName": "Customer Name"
            }
        ]
    },
    "senderAddress": "<[email protected]>"
}

poller = email_client.begin_send(message)
print("Result: " + poller.result())

Выполните следующие замены в коде:

  • Замените <[email protected]> адрес электронной почты, на который вы хотите отправить сообщение.
  • Замените <[email protected]> на адрес MailFrom вашего проверенного домена.

Получение состояния доставки электронной почты

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

POLLER_WAIT_TIME = 10

try:
    email_client = EmailClient.from_connection_string(connection_string)

    poller = email_client.begin_send(message);

    time_elapsed = 0
    while not poller.done():
        print("Email send poller status: " + poller.status())

        poller.wait(POLLER_WAIT_TIME)
        time_elapsed += POLLER_WAIT_TIME

        if time_elapsed > 18 * POLLER_WAIT_TIME:
            raise RuntimeError("Polling timed out.")

    if poller.result()["status"] == "Succeeded":
        print(f"Successfully sent the email (operation id: {poller.result()['id']})")
    else:
        raise RuntimeError(str(poller.result()["error"]))

except Exception as ex:
    print(ex)

Выполнение кода

Запустите приложение из каталога приложения с помощью команды python.

python send-email.py

Пример кода

Пример приложения можно скачать из GitHub Azure Samples Send email for Python

Предварительные условия

  • Учетная запись Azure с активной подпиской. Создать бесплатную учетную запись Azure.

  • Активный ресурс Служб коммуникации Azure. Создать ресурс Служб коммуникации.

  • Активный ресурс и рабочий процесс Azure Logic Apps (логическое приложение) или создайте новый ресурс логического приложения и рабочий процесс с нужным триггером. В настоящее время соединитель электронной почты Службы коммуникации Azure предоставляет только действия, поэтому рабочий процесс вашего логического приложения требует, по крайней мере, одного триггера. Вы можете создать ресурс приложения логики "Потребление" или "Стандартный".

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

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

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

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

  1. В конструкторе откройте рабочий процесс логического приложения.

    Потребление

    1. На шаге, в котором нужно добавить новое действие, выберите новый шаг. Кроме того, чтобы добавить новое действие между шагами, переместите указатель на стрелку между этими шагами, выберите знак плюса (+) и нажмите кнопку "Добавить действие".

    2. В поле "Выбор операции" выберите "Премиум". В поле поиска введите Azure Communication Email.

    3. В списке действий выберите "Отправить сообщение электронной почты".

      Снимок экрана: действие

    Стандартные

    1. На шаге, в котором нужно добавить новое действие, выберите знак плюса (+). Кроме того, чтобы добавить новое действие между шагами, переместите указатель на стрелку между этими шагами, выберите знак плюса (+) и нажмите кнопку "Добавить действие".

    2. Под строкой поиска «Добавить действие» выберите «Премиум» в раскрывающемся списке среды выполнения. В поле поиска введите Azure Communication Email.

    3. В списке действий выберите "Отправить сообщение электронной почты".

  2. Укажите имя подключения.

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

    1. В портал Azure откройте ресурс Службы коммуникации Azure.

    2. В меню ресурсов в разделе «Параметры» выберите «Ключи» и скопируйте строку подключения.

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

  4. По завершении нажмите Создать.

  5. В поле Fromиспользуйте адрес электронной почты, настроенный в предварительных требованиях. Введите значения полей "Электронная почта", "Тема" и "Текст ", например:

    Скриншот, показывающий входные данные действия

  6. Сохраните рабочий процесс. На панели инструментов конструктора выберите Сохранить.

Тестирование рабочего процесса

На основе наличия рабочего процесса "Потребление" или "Стандартный" вручную запустите рабочий процесс:

  • Потребление: на панели инструментов конструктора выберите Запустить триггер>Запуск.
  • Стандартный: в меню рабочего процесса выберите "Обзор". На панели инструментов выберите запуск триггера>.

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

Вы должны получить сообщение электронной почты по указанному адресу. Кроме того, можно использовать действие "Получить сообщение электронной почты", чтобы проверить состояние отправки сообщений электронной почты с помощью действия "Отправить электронную почту ". Дополнительные действия см. в справочной документации по соединителю электронной почты Службы коммуникации Azure.

Очистка ресурсов рабочего процесса

Чтобы очистить ресурс логического приложения, рабочий процесс и связанные ресурсы, ознакомьтесь с руководством по очистке ресурсов пакета Consumption или как очистить ресурсы пакета Standard.

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

Завершение этой статьи обойдется вам в небольшую стоимость — несколько центов США или даже меньше в вашей учетной записи Azure.

Предварительные условия

Проверка предварительных условий

  • В Windows PowerShell выполните Get-Module -ListAvailable -Name Az.Communication команду, чтобы проверить, установлен ли модуль коммуникации.
  • Чтобы просмотреть домены, проверенные ресурсом Служб коммуникации электронной почты, войдите в портал Azure. Найдите ресурс Служб коммуникации электронной почты и откройте вкладку "Подготовка доменов " на левой панели навигации.

Настройка

Установка модуля коммуникации

Установите модуль Служб коммуникации Azure для Azure PowerShell с помощью Install-Module -Name Az.Communication команды.

Install-Module -Name Az.Communication

После установки модуля коммуникации выполните Get-Command -Module Az.Communication команду, чтобы получить все модули связи.

Get-Command -Module Az.Communication

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

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

$emailRecipientTo = @(
   @{
        Address = "<[email protected]>"
        DisplayName = "Email DisplayName"
    }
)

$message = @{
    ContentSubject = "Test Email"
    RecipientTo = @($emailRecipientTo)  # Array of email address objects
    SenderAddress = '<[email protected]>'   
    ContentPlainText = "This is the first email from ACS - Azure PowerShell"    
}

Send-AzEmailServicedataEmail -Message $Message -endpoint "<yourEndpoint>"

Выполните следующие замены в коде:

  • Замените <yourEndpoint> конечной точкой.
  • Замените <[email protected]> адрес электронной почты, на который вы хотите отправить сообщение.
  • Замените <[email protected]> на адрес MailFrom вашего проверенного домена.

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

$emailRecipientTo = @(
   @{
        Address = "<[email protected]>"
        DisplayName = "Email DisplayName"
    },
   @{
        Address = "<[email protected]>"
        DisplayName = "Email DisplayName"
    }
)

$fileBytes1 = [System.IO.File]::ReadAllBytes("<file path>")

$fileBytes2 = [System.IO.File]::ReadAllBytes("<image file path>")

$emailAttachment = @(
    @{
        ContentInBase64 = $fileBytes1
        ContentType = "<text/plain>"
        Name = "<test.txt>"
    },
    @{
        ContentInBase64 = $fileBytes2
        ContentType = "<image/png>"
        Name = "<inline-attachment.png>"
        contentId = "<inline-attachment>"
    }
)

$headers = @{
    "Key1" = "Value1"
    "Key2" = "Value2"
    "Importance" = "high"
}

$emailRecipientBcc = @(
   @{
        Address = "<[email protected]>"
        DisplayName = "Email DisplayName"
    }
)

$emailRecipientCc = @(
   @{
        Address = "<[email protected]>"
        DisplayName = "Email DisplayName"
    }
)

$emailRecipientReplyTo = @(
   @{
        Address = "<[email protected]>"
        DisplayName = "Email DisplayName"
    }
)

$message = @{
    ContentSubject = "Test Email"
    RecipientTo = @($emailRecipientTo)  # Array of email address objects
    SenderAddress = '<[email protected]>'
    Attachment = @($emailAttachment) # Array of attachments
    ContentHtml = "<html><head><title>Enter title</title></head><body><img src='cid:inline-attachment' alt='Company Logo'/><h1>This is the first email from ACS - Azure PowerShell</h1></body></html>"
    ContentPlainText = "This is the first email from ACS - Azure PowerShell"
    Header = $headers  # Importance = high/medium/low or X-Priority = 2/3/4  
    RecipientBcc = @($emailRecipientBcc) # Array of email address objects
    RecipientCc = @($emailRecipientCc) # Array of email address objects
    ReplyTo = @($emailRecipientReplyTo) # Array of email address objects
    UserEngagementTrackingDisabled = $true
}

Send-AzEmailServicedataEmail -Message $Message -endpoint "<yourEndpoint>"

Выполните следующие замены в коде:

  • Замените <yourEndpoint> конечной точкой.
  • Замените <[email protected]> and <[email protected]> адреса электронной почты, на которые вы хотите отправить сообщение.
  • Замените <file path> and <image file path> на фактические пути к файлам вложений, которые вы хотите отправить.
  • Замените <text/plain> and <image/png> соответствующими типами контента для вложений.
  • Замените <test.txt> and <inline-attachment.png> названиями файлов ваших вложений.
  • Замените <inline-attachment> на идентификатор содержимого для встроенного вложения.
  • Замените <[email protected]> адрес электронной почты, на который вы хотите отправить сообщение в качестве BCC.
  • Замените <[email protected]> адрес электронной почты, на который вы хотите отправить сообщение в качестве CC.
  • Замените <[email protected]> адрес электронной почты, на который вы хотите отправить ответы.
  • Замените <[email protected]> на адрес MailFrom вашего подтвержденного домена.

Необязательные параметры

Следующие необязательные параметры доступны в Azure PowerShell.

  • ContentHtml можно использовать для указания html-текста сообщения электронной почты.

  • ContentPlainText используется для указания текста обычного текста сообщения электронной почты.

  • Attachment задает список вложений электронной почты. Этот параметр принимает массив путей к файлам или объектов вложений. Мы ограничиваем общий размер запроса электронной почты, включая обычные и встроенные вложения, до 10 МБ.

  • Header Пользовательские заголовки электронной почты, передаваемые и задает уровень важности электронной почты (высокий, обычный или низкий).

  • RecipientBcc массив получателей для поля BCC.

  • RecipientCc массив получателей для поля CC.

  • ReplyTo массив адресов электронной почты, в которых отправляются ответы получателей.

  • UserEngagementTrackingDisabled указывает, нужно ли отключать отслеживание взаимодействия пользователей для этого запроса, если параметр отслеживания взаимодействия с пользователем на уровне ресурсов уже включен в плоскости управления.

Вы также можете использовать список получателей с RecipientCc и RecipientBcc, аналогичный RecipientTo. Должен быть по крайней мере один получатель в RecipientTo или RecipientCc или RecipientBcc.

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

Доставка по электронной почте

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

Внимание

Результат успеха, возвращенный проверкой состояния операции отправки, подтверждает только факт, что электронная почта успешно отправлена на доставку. Для получения дополнительной информации о состоянии доставки на стороне получателя см. статью об обработке событий электронной почты.

Ограничение отправки электронной почты

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

Примечание.

Эта песочница предназначена для того, чтобы разработчики начали создавать приложение. Вы можете постепенно запросить увеличение объема отправки после готовности приложения к работе. Отправьте запрос на поддержку, чтобы увеличить требуемое ограничение отправки, если требуется отправить объем сообщений, превышающих ограничения скорости.

Очистка ресурсов Службы коммуникации Azure

Чтобы очистить и удалить подписку служб коммуникации, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все другие связанные ресурсы. См. сведения об очистке ресурсов.

Следующие шаги

В этой статье описывается, как отправлять сообщения электронной почты с помощью Службы коммуникации Azure. Кроме того, вы можете сделать следующее: