Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment lever une exception lorsque la limite du niveau d’envoi de courrier électronique est atteinte à l’aide de nos kits SDK de messagerie.
Lever une exception lorsque la limite de niveau d’envoi d’e-mail est atteinte
L’API Email utilise une limitation de bande passante sur le nombre de messages électroniques que vous pouvez envoyer. Les limites d’envoi d’e-mails sont appliquées par minute et par heure, comme décrit dans la limitation et le délai d’expiration des API. Lorsque vous atteignez ces limites, l’e-mail suivant envoyé avec des appels SendAsync
reçoit une réponse d’erreur 429: Too Many Requests
. Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après avoir attendu une certaine période de temps. Pour capturer ces codes de réponse, nous vous recommandons de configurer la journalisation avec le Kit de développement logiciel (SDK) Azure.
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 utilise une limitation de bande passante sur le nombre de messages électroniques que vous pouvez envoyer. Les limites d’envoi d’e-mails sont appliquées par minute et par heure, comme décrit dans la limitation et le délai d’expiration des API. Lorsque vous atteignez ces limites, l’e-mail suivant envoyé avec des appels SendAsync
reçoit une réponse d’erreur 429: Too Many Requests
. Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après avoir attendu une certaine période de temps. Pour capturer ces codes de réponse, nous vous recommandons de configurer la journalisation avec le Kit de développement logiciel (SDK) Azure.
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. Lorsque vous atteignez ces limites, tous les appels supplémentaires beginSend
reçoivent une 429: Too Many Requests
réponse. Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après avoir attendu une certaine période de temps. Nous vous recommandons de configurer la journalisation avec le Kit de développement logiciel (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 utilise une limitation de bande passante sur le nombre de messages électroniques que vous pouvez envoyer. Les limites d’envoi d’e-mails sont appliquées par minute et par heure, comme décrit dans la limitation et le délai d’expiration des API. Lorsque vous atteignez ces limites, l’e-mail suivant envoyé avec des appels SendAsync
reçoit une réponse d’erreur 429: Too Many Requests
. Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après avoir attendu une certaine période de temps. Pour capturer ces codes de réponse, nous vous recommandons de configurer la journalisation avec le Kit de développement logiciel (SDK) Azure.
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 réessai à votre client de messagerie pour vous assurer que les codes de réponse 429 déclenchent 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 utilise une limitation de bande passante sur le nombre de messages électroniques que vous pouvez envoyer. Les limites d’envoi d’e-mails sont appliquées par minute et par heure, comme décrit dans la limitation et le délai d’expiration des API. Lorsque vous atteignez ces limites, l’e-mail suivant envoyé avec des appels SendAsync
reçoit une réponse d’erreur 429: Too Many Requests
. Par défaut, le Kit de développement logiciel (SDK) est configuré pour réessayer ces demandes après avoir attendu une certaine période de temps. Pour capturer ces codes de réponse, nous vous recommandons de configurer la journalisation avec le Kit de développement logiciel (SDK) Azure.
Vous pouvez également définir vous-même une stratégie personnalisée pour vous assurer que les codes de réponse 429 lèvent une exception au lieu d’être tentés à nouveau.
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)
Résolution des problèmes
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 renvoyé par l’interrogation du statut de l’opération d’envoi valide uniquement le fait que l’e-mail est envoyé pour livraison. Pour plus d’informations sur l’état de la livraison chez le destinataire, consultez comment gérer les événements de messagerie.
Limitation des e-mails
Si votre application est suspendue, cela peut être dû à la limitation de l’envoi d’e-mails. Vous pouvez gérer la limitation des e-mails en journalisant ou en implémentant une stratégie personnalisée.
Remarque
Ce bac à sable est destiné à aider les développeurs à créer 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
- Apprenez comment envoyer du courrier électronique à plusieurs destinataires
- En savoir plus sur l’envoi d’e-mails avec des pièces jointes
- Vous familiariser avec la bibliothèque de client Email