Sdílet prostřednictvím


Rychlý start: Vyvolání výjimky při dosažení limitu úrovně odesílání e-mailů

V tomto rychlém startu se dozvíte, jak vyvolat výjimku při dosažení limitu úrovně odesílání e-mailů pomocí našich sad EMAIL SDK.

Vyvolání výjimky při dosažení limitu úrovně odesílání e-mailů

Rozhraní EMAIL API omezuje počet e-mailových zpráv, které můžete posílat. Email odesílání má limity po minutách a za hodinu, jak je uvedeno v tématu Omezování rozhraní API a Vypršení časových limitů. Po dosažení těchto limitů se u následných e-mailů s SendAsync voláním zobrazí chybová odpověď 429: Příliš mnoho požadavků. Ve výchozím nastavení je sada SDK nakonfigurovaná tak, aby se po určité době počkala na opakování těchto požadavků. Pro zachycení těchto kódů odpovědí doporučujeme nastavit protokolování pomocí sady Azure SDK .

Případně můžete ručně definovat vlastní zásadu:

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

Přidejte tuto zásadu do e-mailového klienta, abyste zajistili, že kódy odpovědí 429 místo opakování vyvolá výjimku.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Vyvolání výjimky při dosažení limitu úrovně odesílání e-mailů

Rozhraní EMAIL API omezuje počet e-mailových zpráv, které můžete posílat. Email odesílání má limity po minutách a za hodinu, jak je uvedeno v tématu Omezování rozhraní API a Vypršení časových limitů. Po dosažení těchto limitů se u následných e-mailů s send voláním zobrazí chybová odpověď 429: Příliš mnoho požadavků. Ve výchozím nastavení je sada SDK nakonfigurovaná tak, aby se po určité době počkala na opakování těchto požadavků. Pro zachycení těchto kódů odpovědí doporučujeme nastavit protokolování pomocí sady Azure SDK .

Počet e-mailů, které můžete odesílat pomocí služby Azure Communication Email Service, jsou omezené na minutu a hodinu. Po dosažení těchto limitů se na další beginSend volání zobrazí 429: Too Many Requests odpověď. Ve výchozím nastavení je sada SDK nakonfigurovaná tak, aby se po určité době počkala na opakování těchto požadavků. Pro zachycení těchto kódů odpovědí doporučujeme nastavit protokolování pomocí sady Azure SDK .

Případně můžete ručně definovat vlastní zásadu:

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

Přidejte tuto zásadu do e-mailového klienta, abyste zajistili, že kódy odpovědí 429 místo opakování vyvolá výjimku.

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

const emailClient = new EmailClient(connectionString, clientOptions);

Vyvolání výjimky při dosažení limitu úrovně odesílání e-mailů

Rozhraní EMAIL API omezuje počet e-mailových zpráv, které můžete posílat. Email odesílání má limity po minutách a za hodinu, jak je uvedeno v tématu Omezování rozhraní API a Vypršení časových limitů. Po dosažení těchto limitů se u následných e-mailů s beginSend voláním zobrazí chybová odpověď 429: Příliš mnoho požadavků. Ve výchozím nastavení je sada SDK nakonfigurovaná tak, aby se po určité době počkala na opakování těchto požadavků. Pro zachycení těchto kódů odpovědí doporučujeme nastavit protokolování pomocí sady Azure SDK .

Případně můžete ručně definovat vlastní zásadu:

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

Přidejte tuto zásadu opakování do svého e-mailového klienta, abyste zajistili, že kódy odpovědí 429 místo opakování vyvolají výjimku.

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

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

Vyvolání výjimky při dosažení limitu úrovně odesílání e-mailů

Rozhraní EMAIL API omezuje počet e-mailových zpráv, které můžete posílat. Email odesílání má limity po minutách a za hodinu, jak je uvedeno v tématu Omezování rozhraní API a Vypršení časových limitů. Po dosažení těchto limitů se u následných e-mailů s SendAsync voláním zobrazí chybová odpověď 429: Příliš mnoho požadavků. Ve výchozím nastavení je sada SDK nakonfigurovaná tak, aby se po určité době počkala na opakování těchto požadavků. Pro zachycení těchto kódů odpovědí doporučujeme nastavit protokolování pomocí sady Azure SDK .

Případně můžete ručně definovat vlastní zásady, abyste zajistili, že kódy odpovědí 429 místo opakování vyvolají výjimku.

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)

Řešení potíží

Email Doručení

Pokud chcete řešit problémy související s doručováním e-mailů, můžete získat stav doručování e-mailů a zaznamenat tak podrobnosti o doručení.

Důležité

Výsledek úspěchu vrácený dotazem na stav operace odeslání pouze ověří skutečnost, že e-mail byl úspěšně odeslán k doručení. Pokud chcete získat další informace o stavu doručení na straně příjemce, budete potřebovat odkaz na zpracování e-mailových událostí.

Email omezování

Pokud uvidíte, že se vaše aplikace zablokuje, může to být kvůli omezování odesílání e-mailů. Můžete to vyřešit protokolováním nebo implementací vlastních zásad.

Poznámka

Toto nastavení sandboxu má vývojářům pomoct začít vytvářet aplikaci. Jakmile bude aplikace připravená k provozu, můžete postupně požádat o zvýšení odesílajícího svazku. Pokud požadujete odesílání objemu zpráv překračujících limity rychlosti, odešlete žádost o podporu ke zvýšení požadovaného limitu odesílání.

Vyčištění prostředků služby Azure Communication Service

Pokud chcete vyčistit a odebrat předplatné komunikačních služeb, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky, které jsou k ní přidružené. Přečtěte si další informace o čištění prostředků.

Další kroky

V tomto rychlém startu jste zjistili, jak ručně dotazovat na stav při odesílání e-mailů pomocí Azure Communication Services.

Můžete také chtít: