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:
- Aprenda cómo enviar un correo electrónico a varios destinatarios
- Más información sobre el envío de correo electrónico con datos adjuntos
- Familiarizarse con la biblioteca cliente de correo electrónico