Compartir a través de


Inicio rápido: Iniciar una excepción cuando se alcanza el límite de nivel de envío de correo electrónico

En este inicio rápido, aprenderá sobre cómo iniciar una excepción cuando se alcance el límite del nivel de envío de correo electrónico mediante nuestros SDK de Email.

Iniciar una excepción cuando se alcanza el límite de nivel de envío de correo electrónico

La API de Email tiene limitaciones con respecto al número de mensajes de correo electrónico que puede enviar. El envío de correo electrónico tiene límites aplicados por minuto y por hora, tal y como se menciona en Limitación de API y tiempos de espera. Cuando haya alcanzado estos límites, los envíos de correo electrónico adicionales con llamadas SendAsync recibirán una respuesta de error de "429: Demasiadas solicitudes". De forma predeterminada, el SDK está configurado para reintentar estas solicitudes después de esperar un período de tiempo determinado. Se recomienda configurar el registro con el SDK de Azure para capturar estos códigos de respuesta.

Como alternativa, puede definir manualmente una directiva personalizada:

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

Agregue esta directiva al cliente de correo electrónico para asegurarse de que los códigos de respuesta 429 inician una excepción en lugar de reintentarse.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Iniciar una excepción cuando se alcanza el límite de nivel de envío de correo electrónico

La API de Email tiene limitaciones con respecto al número de mensajes de correo electrónico que puede enviar. El envío de correo electrónico tiene límites aplicados por minuto y por hora, tal y como se menciona en Limitación de API y tiempos de espera. Cuando haya alcanzado estos límites, los envíos de correo electrónico adicionales con llamadas send recibirán una respuesta de error de "429: Demasiadas solicitudes". De forma predeterminada, el SDK está configurado para reintentar estas solicitudes después de esperar un período de tiempo determinado. Se recomienda configurar el registro con el SDK de Azure para capturar estos códigos de respuesta.

Hay límites por minuto y por hora para la cantidad de correos electrónicos que puede enviar mediante el servicio de correo electrónico de comunicación de Azure. Cuando haya alcanzado estos límites, otras llamadas más beginSend recibirán una respuesta 429: Too Many Requests. De forma predeterminada, el SDK está configurado para reintentar estas solicitudes después de esperar un período de tiempo determinado. Se recomienda configurar el registro con el SDK de Azure para capturar estos códigos de respuesta.

Como alternativa, puede definir manualmente una directiva personalizada:

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

Agregue esta directiva al cliente de correo electrónico para asegurarse de que los códigos de respuesta 429 inician una excepción en lugar de reintentarse.

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

const emailClient = new EmailClient(connectionString, clientOptions);

Iniciar una excepción cuando se alcanza el límite de nivel de envío de correo electrónico

La API de Email tiene limitaciones con respecto al número de mensajes de correo electrónico que puede enviar. El envío de correo electrónico tiene límites aplicados por minuto y por hora, tal y como se menciona en Limitación de API y tiempos de espera. Cuando haya alcanzado estos límites, los envíos de correo electrónico adicionales con llamadas beginSend recibirán una respuesta de error de "429: Demasiadas solicitudes". De forma predeterminada, el SDK está configurado para reintentar estas solicitudes después de esperar un período de tiempo determinado. Se recomienda configurar el registro con el SDK de Azure para capturar estos códigos de respuesta.

Como alternativa, puede definir manualmente una directiva personalizada:

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

Agregue esta directiva de reintento al cliente de correo electrónico para asegurarse de que los códigos de respuesta 429 inician una excepción en lugar de reintentarse.

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

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

Iniciar una excepción cuando se alcanza el límite de nivel de envío de correo electrónico

La API de Email tiene limitaciones con respecto al número de mensajes de correo electrónico que puede enviar. El envío de correo electrónico tiene límites aplicados por minuto y por hora, tal y como se menciona en Limitación de API y tiempos de espera. Cuando haya alcanzado estos límites, los envíos de correo electrónico adicionales con llamadas SendAsync recibirán una respuesta de error de "429: Demasiadas solicitudes". De forma predeterminada, el SDK está configurado para reintentar estas solicitudes después de esperar un período de tiempo determinado. Se recomienda configurar el registro con el SDK de Azure para capturar estos códigos de respuesta.

Como alternativa, puede definir manualmente una directiva personalizada para asegurarse de que los códigos de respuesta 429 inician una excepción en lugar de reintentarse.

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)

Solución de problemas

Entrega de correo electrónico

Para solucionar incidencias relacionadas con la entrega de correo electrónico, puede obtener el estado de la entrega de correo electrónico para capturar los detalles de la entrega.

Importante

El resultado correcto devuelto por el sondeo del estado de la operación de envío solo valida el hecho de que el correo electrónico se haya enviado correctamente para su entrega. Para obtener información adicional sobre el estado de la entrega en el extremo del destinatario, deberá hacer referencia a cómo controlar los eventos de correo electrónico.

limitación de correo electrónico

Si ve que la aplicación se bloquea, podría deberse a que el envío de correo electrónico está limitado. Puede controlarlo mediante el registro o mediante la implementación de una directiva personalizada.

Nota

Esta configuración de espacio aislado sirve para ayudar a los desarrolladores a empezar a compilar la aplicación. Puede solicitar gradualmente aumentar el volumen de envío una vez que la aplicación esté lista para publicarse. Envíe una solicitud de soporte técnico para aumentar el límite de envío deseado si necesita enviar un volumen de mensajes que supere los límites de frecuencia.

Limpieza de recursos de Azure Communication Service

Si quiere limpiar y quitar una suscripción a Communication Services, puede eliminar el recurso o grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él. Obtenga más información sobre la limpieza de recursos.

Pasos siguientes

En este inicio rápido, ha aprendido a sondear manualmente el estado al enviar correo electrónico mediante Azure Communication Services.

Puede que también le interese: