Início Rápido: acione uma exceção quando o limite do escalão de envio de e-mail é atingido

Neste guia de introdução, ficará a saber como lançar uma exceção quando o limite da camada de envio de e-mail for atingido através dos nossos SDKs de Email.

Gerar uma exceção quando o limite da camada de envio de e-mail for atingido

A API de Email tem limitações no número de mensagens de e-mail que pode enviar. Email envio tem limites aplicados por minuto e por hora, conforme mencionado em Limitação de API e Tempos Limites. Quando atingir estes limites, os e-mails subsequentes enviados com SendAsync chamadas recebem uma resposta de erro "429: Demasiados Pedidos". Por predefinição, o SDK está configurado para repetir estes pedidos depois de aguardar um determinado período de tempo. Recomendamos que configure o registo com o SDK do Azure para capturar estes códigos de resposta.

Em alternativa, pode definir manualmente uma política 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);
        }
    }
}

Adicione esta política ao seu cliente de e-mail para garantir que os códigos de resposta 429 geram uma exceção em vez de serem repetidos.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

Gerar uma exceção quando o limite da camada de envio de e-mail for atingido

A API de Email tem limitações no número de mensagens de e-mail que pode enviar. Email envio tem limites aplicados por minuto e por hora, conforme mencionado em Limitação de API e Tempos Limites. Quando atingir estes limites, os e-mails subsequentes enviados com send chamadas recebem uma resposta de erro "429: Demasiados Pedidos". Por predefinição, o SDK está configurado para repetir estes pedidos depois de aguardar um determinado período de tempo. Recomendamos que configure o registo com o SDK do Azure para capturar estes códigos de resposta.

Existem limites por minuto e por hora para a quantidade de e-mails que pode enviar com o Azure Communication Email Service. Quando atingir estes limites, quaisquer outras beginSend chamadas recebem uma 429: Too Many Requests resposta. Por predefinição, o SDK está configurado para repetir estes pedidos depois de aguardar um determinado período de tempo. Recomendamos que configure o registo com o SDK do Azure para capturar estes códigos de resposta.

Em alternativa, pode definir manualmente uma política personalizada:

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

Adicione esta política ao seu cliente de e-mail para garantir que os códigos de resposta 429 geram uma exceção em vez de serem repetidos.

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

const emailClient = new EmailClient(connectionString, clientOptions);

Gerar uma exceção quando o limite da camada de envio de e-mail for atingido

A API de Email tem limitações no número de mensagens de e-mail que pode enviar. Email envio tem limites aplicados por minuto e por hora, conforme mencionado em Limitação de API e Tempos Limites. Quando atingir estes limites, os e-mails subsequentes enviados com beginSend chamadas recebem uma resposta de erro "429: Demasiados Pedidos". Por predefinição, o SDK está configurado para repetir estes pedidos depois de aguardar um determinado período de tempo. Recomendamos que configure o registo com o SDK do Azure para capturar estes códigos de resposta.

Em alternativa, pode definir manualmente uma política 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);
        }
    }
}

Adicione esta política de repetição ao seu cliente de e-mail para garantir que os códigos de resposta 429 geram uma exceção em vez de serem repetidos novamente.

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

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

Gerar uma exceção quando o limite da camada de envio de e-mail for atingido

A API de Email tem limitações no número de mensagens de e-mail que pode enviar. Email envio tem limites aplicados por minuto e por hora, conforme mencionado em Limitação de API e Tempos Limites. Quando atingir estes limites, os e-mails subsequentes enviados com SendAsync chamadas recebem uma resposta de erro "429: Demasiados Pedidos". Por predefinição, o SDK está configurado para repetir estes pedidos depois de aguardar um determinado período de tempo. Recomendamos que configure o registo com o SDK do Azure para capturar estes códigos de resposta.

Em alternativa, pode definir manualmente uma política personalizada para garantir que os códigos de resposta 429 geram uma exceção em vez de serem repetidos.

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)

Resolução de problemas

Email Entrega

Para resolver problemas relacionados com a entrega de e-mail, pode obter o estado da entrega de e-mail para capturar os detalhes da entrega.

Importante

O resultado bem-sucedido devolvido pela consulta do estado da operação de envio apenas valida o facto de o e-mail ter sido enviado com êxito para entrega. Para obter informações adicionais sobre o estado da entrega no final do destinatário, terá de referenciar como processar eventos de e-mail.

Limitação de Email

Se vir que a sua aplicação está bloqueada, pode dever-se ao envio de e-mail ser limitado. Pode lidar com isto através do registo ou através da implementação de uma política personalizada.

Nota

Esta configuração do sandbox destina-se a ajudar os programadores a começar a criar a aplicação. Pode pedir gradualmente para aumentar o volume de envio assim que a aplicação estiver pronta para entrar em funcionamento. Submeta um pedido de suporte para aumentar o limite de envio pretendido se precisar de enviar um volume de mensagens que exceda os limites de taxa.

Limpar recursos do Azure Communication Service

Se quiser limpar e remover uma subscrição dos Serviços de Comunicação, pode eliminar o recurso ou grupo de recursos. Eliminar o grupo de recursos também elimina quaisquer outros recursos associados ao mesmo. Saiba mais sobre a limpeza de recursos.

Passos seguintes

Neste guia de introdução, aprendeu a consultar manualmente o estado ao enviar e-mails com Azure Communication Services.

Também pode querer: