Eine Ausnahme auslösen, wenn das Stufenlimit für das Senden von E-Mails erreicht ist

In diesem Artikel wird beschrieben, wie Sie eine Ausnahme auslösen, wenn das Limit der E-Mail-Sendeebene mit unseren E-Mail-SDKs erreicht wird.

Eine Ausnahme auslösen, wenn das Stufenlimit für das Senden von E-Mails erreicht ist

Die E-Mail-API verwendet Drosselung mit Beschränkungen bei der Anzahl der E-Mail-Nachrichten, die Sie senden können. E-Mail-Sendegrenzwerte werden pro Minute und Stunde angewendet, wie in API-Einschränkung und Timeouts beschrieben. Wenn Sie diese Grenzwerte erreichen, erhalten nachfolgende E-Mails mit SendAsync Anrufen eine Fehlermeldung von 429: Too Many Requests. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen wiederholt werden, nachdem ein bestimmter Zeitraum gewartet wurde. Um diese Antwortcodes zu erfassen, empfehlen wir, die Protokollierung mit dem Azure SDK einzurichten.

Alternativ können Sie eine benutzerdefinierte Richtlinie manuell definieren:

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

Fügen Sie diese Richtlinie ihrem E-Mail-Client hinzu, um sicherzustellen, dass 429-Antwortcodes eine Ausnahme auslösen, anstatt erneut versucht zu werden.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Eine Ausnahme auslösen, wenn das Stufenlimit für das Senden von E-Mails erreicht ist

Die E-Mail-API verwendet Drosselung mit Beschränkungen bei der Anzahl der E-Mail-Nachrichten, die Sie senden können. E-Mail-Sendegrenzwerte werden pro Minute und Stunde angewendet, wie in API-Einschränkung und Timeouts beschrieben. Wenn Sie diese Grenzwerte erreichen, erhalten nachfolgende E-Mails mit SendAsync Anrufen eine Fehlermeldung von 429: Too Many Requests. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen wiederholt werden, nachdem ein bestimmter Zeitraum gewartet wurde. Um diese Antwortcodes zu erfassen, empfehlen wir, die Protokollierung mit dem Azure SDK einzurichten.

Die Anzahl der E-Mails, die Sie über den Azure Communication Email Service senden können, sind pro Minute und Stunde begrenzt. Wenn Sie diese Grenzwerte erreichen, erhalten alle weiteren beginSend Anrufe eine 429: Too Many Requests Antwort. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen wiederholt werden, nachdem ein bestimmter Zeitraum gewartet wurde. Es wird empfohlen, die Protokollierung mit dem Azure SDK einzurichten , um diese Antwortcodes zu erfassen.

Alternativ können Sie eine benutzerdefinierte Richtlinie manuell definieren:

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

Fügen Sie diese Richtlinie ihrem E-Mail-Client hinzu, um sicherzustellen, dass 429-Antwortcodes eine Ausnahme auslösen, anstatt erneut versucht zu werden.

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

const emailClient = new EmailClient(connectionString, clientOptions);

Eine Ausnahme auslösen, wenn das Stufenlimit für das Senden von E-Mails erreicht ist

Die E-Mail-API verwendet Drosselung mit Beschränkungen bei der Anzahl der E-Mail-Nachrichten, die Sie senden können. E-Mail-Sendegrenzwerte werden pro Minute und Stunde angewendet, wie in API-Einschränkung und Timeouts beschrieben. Wenn Sie diese Grenzwerte erreichen, erhalten nachfolgende E-Mails mit SendAsync Anrufen eine Fehlermeldung von 429: Too Many Requests. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen wiederholt werden, nachdem ein bestimmter Zeitraum gewartet wurde. Um diese Antwortcodes zu erfassen, empfehlen wir, die Protokollierung mit dem Azure SDK einzurichten.

Alternativ können Sie eine benutzerdefinierte Richtlinie manuell definieren:

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

Fügen Sie diese Wiederholungsrichtlinie zu Ihrem E-Mail-Client hinzu, um sicherzustellen, dass 429-Antwortcodes eine Ausnahme auslösen, anstatt erneut versucht zu werden.

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

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

Eine Ausnahme auslösen, wenn das Stufenlimit für das Senden von E-Mails erreicht ist

Die E-Mail-API verwendet Drosselung mit Beschränkungen bei der Anzahl der E-Mail-Nachrichten, die Sie senden können. E-Mail-Sendegrenzwerte werden pro Minute und Stunde angewendet, wie in API-Einschränkung und Timeouts beschrieben. Wenn Sie diese Grenzwerte erreichen, erhalten nachfolgende E-Mails mit SendAsync Anrufen eine Fehlermeldung von 429: Too Many Requests. Standardmäßig ist das SDK so konfiguriert, dass diese Anforderungen wiederholt werden, nachdem ein bestimmter Zeitraum gewartet wurde. Um diese Antwortcodes zu erfassen, empfehlen wir, die Protokollierung mit dem Azure SDK einzurichten.

Alternativ können Sie eine benutzerdefinierte Richtlinie manuell definieren, um sicherzustellen, dass 429-Antwortcodes eine Ausnahme auslösen, anstatt erneut versucht zu werden.

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)

Problembehandlung

E-Mail-Zustellung

Zur Behebung von Problemen im Zusammenhang mit der E-Mail-Zustellung können Sie den Status der E-Mail-Zustellung abrufen, um Zustellungsdetails zu erfassen.

Wichtig

Das Erfolgsergebnis, das durch Abrufen des Status des Sendevorgangs zurückgegeben wird, überprüft nur, ob die E-Mail zur Zustellung gesendet wird. Weitere Informationen zum Status der Übermittlung am Empfängerende finden Sie in der Behandlung von E-Mail-Ereignissen.

E-Mail-Drosselung

Wenn Ihre Anwendung hängen bleibt, kann dies darauf zurückzuführen sein, dass E-Mails gedrosselt werden. Sie können die E-Mail-Drosselung durch Protokollierung oder die Implementierung einer benutzerdefinierten Richtlinie verwalten.

Hinweis

Dieser Sandkasten soll Entwicklern beim Erstellen der Anwendung helfen. Sie können eine schrittweise Erhöhung des Sendevolumens anfordern, sobald die Anwendung einsatzbereit ist. Übermitteln Sie eine Supportanfrage, um das von Ihnen gewünschte Sendelimit zu erhöhen, wenn Sie ein Nachrichtenvolumen senden müssen, das die Ratenbegrenzungen überschreitet.

Bereinigen von Azure Communication Service-Ressourcen

Wenn Sie ein Communication Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind. Weitere Informationen zum Bereinigen von Ressourcen finden Sie hier.

Nächste Schritte