Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo iniciar una excepción cuando se alcanza el límite del nivel de envío de correo electrónico mediante nuestros SDK de correo electrónico.
Lanzar una excepción cuando se alcanza el límite del nivel de envío de correos
La API de Email usa limitaciones con respecto al número de mensajes de correo electrónico que puede enviar. Los límites de envío de correo electrónico se aplican por minuto y por hora, tal y como se describe en Limitación de API y tiempos de espera. Cuando alcanza estos límites, los envíos de correo electrónico adicionales con llamadas SendAsync
recibirán una respuesta de error 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. Para capturar estos códigos de respuesta, se recomienda configurar el registro con el SDK de Azure.
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);
Lanzar una excepción cuando se alcanza el límite del nivel de envío de correos
La API de Email usa limitaciones con respecto al número de mensajes de correo electrónico que puede enviar. Los límites de envío de correo electrónico se aplican por minuto y por hora, tal y como se describe en Limitación de API y tiempos de espera. Cuando alcanza estos límites, los envíos de correo electrónico adicionales con llamadas SendAsync
recibirán una respuesta de error 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. Para capturar estos códigos de respuesta, se recomienda configurar el registro con el SDK de Azure.
Hay límites por minuto y por hora para la cantidad de correos electrónicos que puede enviar mediante Azure Communication Email Service. Cuando alcances estos límites, cualquier llamada beginSend
adicional recibirá 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);
Lanzar una excepción cuando se alcanza el límite del nivel de envío de correos
La API de Email usa limitaciones con respecto al número de mensajes de correo electrónico que puede enviar. Los límites de envío de correo electrónico se aplican por minuto y por hora, tal y como se describe en Limitación de API y tiempos de espera. Cuando alcanza estos límites, los envíos de correo electrónico adicionales con llamadas SendAsync
recibirán una respuesta de error 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. Para capturar estos códigos de respuesta, se recomienda configurar el registro con el SDK de Azure.
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();
Lanzar una excepción cuando se alcanza el límite del nivel de envío de correos
La API de Email usa limitaciones con respecto al número de mensajes de correo electrónico que puede enviar. Los límites de envío de correo electrónico se aplican por minuto y por hora, tal y como se describe en Limitación de API y tiempos de espera. Cuando alcanza estos límites, los envíos de correo electrónico adicionales con llamadas SendAsync
recibirán una respuesta de error 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. Para capturar estos códigos de respuesta, se recomienda configurar el registro con el SDK de Azure.
Como alternativa, puede definir manualmente una directiva personalizada para asegurarse de que los códigos de respuesta 429 generen una excepción en lugar de que vuelvan a intentarse.
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 de éxito obtenido al sondear el estado de la operación de envío solo valida que el correo electrónico ha sido enviado para su entrega. Para obtener más información sobre el estado de la entrega en el lado del destinatario, consulte cómo gestionar eventos de correo electrónico.
Limitación de correo electrónico
Si la aplicación está bloqueada, podría deberse a que se está limitando el envío de correo electrónico. Puede controlar la limitación de correo electrónico mediante el registro o la implementación de una directiva personalizada.
Nota:
Este entorno de pruebas está diseñado para ayudar a los desarrolladores a empezar a construir 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
- 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 de cliente de correo electrónico