Dela via


Snabbstart: Skapa ett undantag när gränsen för e-postsändning har nåtts

I den här snabbstarten får du lära dig hur du genererar ett undantag när gränsen för e-post som skickar nivå nås med hjälp av våra Email SDK:er.

Utlöser ett undantag när gränsen för e-post som skickar nivå har nåtts

EMAIL-API:et har begränsningar för antalet e-postmeddelanden som du kan skicka. Email sändning har begränsningar som tillämpas per minut och per timme enligt beskrivningen i API-begränsning och tidsgränser. När du har nått dessa gränser får efterföljande e-post som skickas med SendAsync samtal ett felsvar på "429: För många begäranden". Som standard konfigureras SDK:et för att försöka utföra dessa begäranden igen efter att ha väntat en viss tidsperiod. Vi rekommenderar att du konfigurerar loggning med Azure SDK för att samla in dessa svarskoder.

Du kan också definiera en anpassad princip manuellt:

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);
        }
    }
}

Lägg till den här principen i e-postklienten för att säkerställa att 429 svarskoder utlöser ett undantag i stället för att försöka igen.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Utlöser ett undantag när gränsen för e-post som skickar nivå har nåtts

EMAIL-API:et har begränsningar för antalet e-postmeddelanden som du kan skicka. Email sändning har begränsningar som tillämpas per minut och per timme enligt beskrivningen i API-begränsning och tidsgränser. När du har nått dessa gränser får efterföljande e-post som skickas med send samtal ett felsvar på "429: För många begäranden". Som standard konfigureras SDK:et för att försöka utföra dessa begäranden igen efter att ha väntat en viss tidsperiod. Vi rekommenderar att du konfigurerar loggning med Azure SDK för att samla in dessa svarskoder.

Det finns gränser per minut och per timme för hur många e-postmeddelanden du kan skicka med hjälp av Azure Communication Email Service. När du har nått dessa gränser får alla ytterligare beginSend anrop ett 429: Too Many Requests svar. Som standard konfigureras SDK:et för att försöka utföra dessa begäranden igen efter att ha väntat en viss tidsperiod. Vi rekommenderar att du konfigurerar loggning med Azure SDK för att samla in dessa svarskoder.

Du kan också definiera en anpassad princip manuellt:

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

Lägg till den här principen i e-postklienten för att säkerställa att 429 svarskoder utlöser ett undantag i stället för att försöka igen.

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

const emailClient = new EmailClient(connectionString, clientOptions);

Utlöser ett undantag när gränsen för e-post som skickar nivå har nåtts

EMAIL-API:et har begränsningar för antalet e-postmeddelanden som du kan skicka. Email sändning har begränsningar som tillämpas per minut och per timme enligt beskrivningen i API-begränsning och tidsgränser. När du har nått dessa gränser får efterföljande e-post som skickas med beginSend samtal ett felsvar på "429: För många begäranden". Som standard konfigureras SDK:et för att försöka utföra dessa begäranden igen efter att ha väntat en viss tidsperiod. Vi rekommenderar att du konfigurerar loggning med Azure SDK för att samla in dessa svarskoder.

Du kan också definiera en anpassad princip manuellt:

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);
        }
    }
}

Lägg till den här återförsöksprincipen i e-postklienten för att säkerställa att 429 svarskoder utlöser ett undantag i stället för att försöka igen.

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

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

Utlöser ett undantag när gränsen för e-post som skickar nivå har nåtts

EMAIL-API:et har begränsningar för antalet e-postmeddelanden som du kan skicka. Email sändning har begränsningar som tillämpas per minut och per timme enligt beskrivningen i API-begränsning och tidsgränser. När du har nått dessa gränser får efterföljande e-post som skickas med SendAsync samtal ett felsvar på "429: För många begäranden". Som standard konfigureras SDK:et för att försöka utföra dessa begäranden igen efter att ha väntat en viss tidsperiod. Vi rekommenderar att du konfigurerar loggning med Azure SDK för att samla in dessa svarskoder.

Du kan också manuellt definiera en anpassad princip för att säkerställa att 429 svarskoder utlöser ett undantag i stället för att försöka igen.

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)

Felsökning

Email leverans

Om du vill felsöka problem som rör e-postleverans kan du få status för e-postleveransen för att samla in leveransinformation.

Viktigt

Det lyckade resultatet som returneras av avsökningen för sändningsåtgärdens status verifierar bara det faktum att e-postmeddelandet har skickats ut för leverans. För att få ytterligare information om status för leveransen på mottagarsidan måste du referera till hur du hanterar e-posthändelser.

Email begränsning

Om du ser att programmet hänger kan det bero på att e-postsändningen begränsas. Du kan hantera detta genom loggning eller genom att implementera en anpassad princip.

Anteckning

Den här sandbox-installationen hjälper utvecklare att börja skapa programmet. Du kan gradvis begära att öka sändningsvolymen när programmet är redo att gå live. Skicka en supportbegäran för att höja din önskade sändningsgräns om du behöver skicka en mängd meddelanden som överskrider hastighetsgränserna.

Rensa Azure Communication Service-resurser

Om du vill rensa och ta bort en Communication Services-prenumeration kan du ta bort resursen eller resursgruppen. Om du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort. Läs mer om att rensa resurser.

Nästa steg

I den här snabbstarten har du lärt dig att manuellt söka efter status när du skickar e-post med hjälp av Azure Communication Services.

Du kanske också vill: