Краткое руководство. Проверка состояния электронной почты вручную при отправке электронной почты
В этом кратком руководстве вы узнаете, как вручную опрашивать состояние электронной почты при отправке электронной почты с помощью наших пакетов SDK для электронной почты.
Начало работы с Службы коммуникации Azure с помощью клиентской библиотеки электронной почты служб коммуникации .NET для отправки сообщений электронной почты.
Совет
Переход к интерфейсу отправки электронной почты с Службы коммуникации Azure путем пропуска непосредственно к базовой отправке электронной почты и расширенной отправке электронной почты на GitHub.
Общие сведения об объектной модели электронной почты
Следующие классы и интерфейсы реализуют некоторые основные функции клиентской библиотеки Служб коммуникации электронной почты для C#.
Имя | Описание |
---|---|
EmailAddress | Этот класс содержит адрес электронной почты и параметр отображаемого имени. |
EmailAttachment | Этот класс создает вложение электронной почты, принимая уникальный идентификатор, строку типа MIME вложения электронной почты, двоичные данные для содержимого и необязательный идентификатор содержимого, чтобы определить его как встроенное вложение. |
EmailClient | Этот класс требуется для реализации всех функций электронной почты. Вы создаете его с помощью строки подключения и используете для отправки сообщений электронной почты. |
EmailClientOptions | Этот класс можно добавить в экземпляр EmailClient для конкретной версии API. |
EmailContent | Этот класс содержит тему и текст сообщения электронной почты. Необходимо указать по крайней мере одно из содержимого PlainText или Html |
EmailCustomHeader | Этот класс позволяет добавить пару имени и значения для настраиваемого заголовка. Важность электронной почты также можно указать с помощью этих заголовков с помощью имени заголовка x-priority или x-msmail-priority. |
EmailMessage | Этот класс объединяет отправителя, содержимое и получателей. Также можно добавить пользовательские заголовки, вложения и адреса электронной почты с ответом. |
EmailRecipients | Этот класс содержит списки объектов EmailAddress для получателей сообщения электронной почты, включая необязательные списки для получателей CC и BCC. |
EmailSendOperation | Этот класс представляет асинхронную операцию отправки электронной почты и возвращается из вызова API отправки электронной почты. |
EmailSendResult | Этот класс содержит результаты операции отправки электронной почты. Он имеет идентификатор операции, состояние операции и объект ошибки (если применимо). |
EmailSendResult возвращает следующее состояние операции электронной почты.
Состояние | Description |
---|---|
NotStarted | В настоящее время мы не отправляем это состояние из нашей службы. |
Выполняется | Операция отправки электронной почты в настоящее время выполняется и обрабатывается. |
Выполнено | Операция отправки электронной почты завершена без ошибок, и сообщение электронной почты выходит за доставку. Любое подробное состояние доставки электронной почты за пределами этого этапа можно получить через Azure Monitor или через Сетка событий Azure. Узнайте, как подписаться на события электронной почты |
Неудачно | Операция отправки электронной почты не прошла успешно и возникла ошибка. Сообщение не было отправлено. Результат содержит объект ошибки с дополнительными сведениями о причине сбоя. |
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Последняя версия клиентской библиотеки NET Core для вашей операционной системы.
- Созданный и готовый ресурс служб коммуникации электронной почты 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
Установка пакета
Оставаясь в каталоге приложения, установите пакет клиентской библиотеки Коммуникации электронной почты для .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);
Отправка асинхронного и опроса для состояния отправки электронной почты
При вызове SendAsync с помощью Azure.WaitUntil.Started метод возвращается обратно после запуска операции. Метод возвращает объект EmailSendOperation. Чтобы обновить состояние операции электронной почты, можно вызвать метод UpdateStatusAsync.
Возвращенный объект EmailSendOperation содержит объект EmailSendStatus, содержащий:
- Текущее состояние операции отправки электронной почты.
- Объект ошибки с сведениями о сбое, если текущее состояние находится в состоянии сбоя.
//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 = "donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net";
var recipient = "emailalias@contoso.com";
/// 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
Если вы хотите отменить и удалить подписку на Службы коммуникации, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы. См. сведения об очистке ресурсов.
Следующие шаги
В этом кратком руководстве вы узнали, как вручную опрашивать состояние при отправке электронной почты с помощью Службы коммуникации Azure.
Полезные ссылки
- Узнайте, как отправлять сообщения электронной почты нескольким получателям
- Дополнительные сведения об отправке сообщений электронной почты с вложениями
- Сведения о клиентской библиотеке для электронной почты