Partager via


Démarrage rapide : Lever une exception lorsque la limite de niveau d’envoi d’e-mail est atteinte

Dans ce guide de démarrage rapide, vous allez découvrir comment lever une exception lorsque la limite du niveau d’envoi d’e-mails est atteinte à l’aide de nos SDK d’e-mail.

Lever une exception lorsque la limite de niveau d’envoi d’e-mail est atteinte

L’API Email a une limitation de bande passante sur le nombre de messages électroniques que vous pouvez envoyer. L'envoi d'e-mails est soumis à des limites appliquées par minute et par heure, comme indiqué dans la section Limitations des API et délais d’expiration. Lorsque vous avez atteint ces limites, les e-mails suivants envoyés avec des appels SendAsync reçoivent une réponse d’erreur « 429 : Trop de requêtes ». Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après une certaine période d’attente. Nous vous recommandons de configurer la journalisation avec le SDK Azure pour capturer ces codes de réponse.

Vous pouvez également définir manuellement une stratégie personnalisée :

using Azure.Core.Pipeline;

public class Catch429Policy : HttpPipelineSynchronousPolicy
{
    public override void OnReceivedResponse(HttpMessage message)
    {
        if (message.Response.Status == 429)
        {
            throw new Exception(message.Response);
        }
        else
        {
            base.OnReceivedResponse(message);
        }
    }
}

Ajoutez cette stratégie à votre client de messagerie pour vous assurer que les codes de réponse 429 lèvent une exception au lieu d’être retentés.

EmailClientOptions emailClientOptions = new EmailClientOptions();
emailClientOptions.AddPolicy(new Catch429Policy(), HttpPipelinePosition.PerRetry);

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Lever une exception lorsque la limite de niveau d’envoi d’e-mail est atteinte

L’API Email a une limitation de bande passante sur le nombre de messages électroniques que vous pouvez envoyer. L'envoi d'e-mails est soumis à des limites appliquées par minute et par heure, comme indiqué dans la section Limitations des API et délais d’expiration. Lorsque vous avez atteint ces limites, les e-mails suivants envoyés avec des appels send reçoivent une réponse d’erreur « 429 : Trop de requêtes ». Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après une certaine période d’attente. Nous vous recommandons de configurer la journalisation avec le SDK Azure pour capturer ces codes de réponse.

Il existe des limites par minute et par heure pour la quantité d’e-mails que vous pouvez envoyer à l’aide d’Azure Communication Email Service. Une fois ces limites atteintes, tous les appels beginSend supplémentaires recevront 429: Too Many Requests une réponse. Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après une certaine période d’attente. Nous vous recommandons de configurer la journalisation avec le SDK Azure pour capturer ces codes de réponse.

Vous pouvez également définir manuellement une stratégie personnalisée :

const catch429Policy = {
  name: "catch429Policy",
  async sendRequest(request, next) {
    const response = await next(request);
    if (response.status === 429) {
      throw new Error(response);
    }
    return response;
  }
};

Ajoutez cette stratégie à votre client de messagerie pour vous assurer que les codes de réponse 429 lèvent une exception au lieu d’être retentés.

const clientOptions = {
  additionalPolicies: [
    {
      policy: catch429Policy,
      position: "perRetry"
    }
  ]
}

const emailClient = new EmailClient(connectionString, clientOptions);

Lever une exception lorsque la limite de niveau d’envoi d’e-mail est atteinte

L’API Email a une limitation de bande passante sur le nombre de messages électroniques que vous pouvez envoyer. L'envoi d'e-mails est soumis à des limites appliquées par minute et par heure, comme indiqué dans la section Limitations des API et délais d’expiration. Lorsque vous avez atteint ces limites, les e-mails suivants envoyés avec des appels beginSend reçoivent une réponse d’erreur « 429 : Trop de requêtes ». Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après une certaine période d’attente. Nous vous recommandons de configurer la journalisation avec le SDK Azure pour capturer ces codes de réponse.

Vous pouvez également définir manuellement une stratégie personnalisée :

import com.azure.core.http.HttpResponse;
import com.azure.core.http.policy.ExponentialBackoff;

public class CustomStrategy extends ExponentialBackoff {
    @Override
    public boolean shouldRetry(HttpResponse httpResponse) {
        int code = httpResponse.getStatusCode();

        if (code == HTTP_STATUS_TOO_MANY_REQUESTS) {
            throw new RuntimeException(httpResponse);
        }
        else {
            return super.shouldRetry(httpResponse);
        }
    }
}

Ajoutez cette stratégie de nouvelle tentative à votre client de messagerie pour vous assurer que les codes de réponse 429 lèvent une exception au lieu d’être retentés.

import com.azure.core.http.policy.RetryPolicy;

EmailClient emailClient = new EmailClientBuilder()
    .connectionString(connectionString)
    .retryPolicy(new RetryPolicy(new CustomStrategy()))
    .buildClient();

Lever une exception lorsque la limite de niveau d’envoi d’e-mail est atteinte

L’API Email a une limitation de bande passante sur le nombre de messages électroniques que vous pouvez envoyer. L'envoi d'e-mails est soumis à des limites appliquées par minute et par heure, comme indiqué dans la section Limitations des API et délais d’expiration. Lorsque vous avez atteint ces limites, les e-mails suivants envoyés avec des appels SendAsync reçoivent une réponse d’erreur « 429 : Trop de requêtes ». Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après une certaine période d’attente. Nous vous recommandons de configurer la journalisation avec le SDK Azure pour capturer ces codes de réponse.

Vous pouvez également définir manuellement une stratégie personnalisée pour vous assurer que les codes de réponse 429 lèvent une exception au lieu d’être retentés.

def callback(response):
    if response.http_response.status_code == 429:
        raise Exception(response.http_response)

email_client = EmailClient.from_connection_string(<connection_string>, raw_response_hook=callback)

Dépannage

Remise d’e-mails

Pour résoudre les problèmes liés à la remise d’e-mails, vous pouvez obtenir l’état de la remise de l’e-mail pour capturer les détails de la remise.

Important

Le résultat de réussite retourné par l’interrogation du statut de l’opération d’envoi valide uniquement le fait que l’e-mail a été envoyé avec succès pour remise. Pour obtenir des informations supplémentaires sur le statut de la remise du côté du destinataire, vous devez référencer la façon de gérer les événements de messagerie.

Limitation d’email

Si vous voyez que votre application est bloquée, cela peut être dû à la limitation de l’envoi d’e-mails. Vous pouvez gérer cela via la journalisation ou en implémentant une stratégie personnalisée.

Notes

Cette configuration de bac à sable (sandbox) permet aux développeurs de commencer à générer l’application. Vous pouvez demander progressivement d’augmenter le volume d’envoi une fois que l’application est prête à démarrer. Envoyez une demande de support pour déclencher votre limite d’envoi souhaitée si vous avez besoin d’envoyer un volume de messages dépassant les limites de débit.

Nettoyer les ressources Azure Communication Service

Si vous voulez nettoyer et supprimer un abonnement Communication Services, vous pouvez supprimer la ressource ou le groupe de ressources. La suppression du groupe de ressources efface également les autres ressources qui y sont associées. Apprenez-en davantage sur le nettoyage des ressources.

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez appris à interroger le statut manuellement lors de l’envoi d’e-mails à l’aide de Azure Communication Services.

Vous voudrez peut-être aussi :