Aracılığıyla paylaş


Hızlı Başlangıç: E-posta gönderme katmanı sınırına ulaşıldığında özel durum oluşturma

Bu hızlı başlangıçta, Email SDK'larımızı kullanarak e-posta gönderme katmanı sınırına ulaşıldığında özel durum oluşturma hakkında bilgi edineceksiniz.

E-posta gönderme katmanı sınırına ulaşıldığında özel durum oluşturma

Email API'sinin, gönderebileceğiniz e-posta iletilerinin sayısıyla ilgili sınırlamalarla azaltması vardır. Email gönderme, API Azaltma ve Zaman Aşımları'nda belirtildiği gibi dakikada ve saatte bir uygulanan sınırlara sahiptir. Bu sınırlara ulaştığınızda, çağrılarla gönderilen SendAsync sonraki e-postalar "429: Çok Fazla İstek" hata yanıtı alır. Varsayılan olarak SDK, belirli bir süre bekledikten sonra bu istekleri yeniden deneyecek şekilde yapılandırılır. Bu yanıt kodlarını yakalamak için Azure SDK ile günlüğe kaydetmeyi ayarlamanızı öneririz.

Alternatif olarak, özel bir ilkeyi el ile tanımlayabilirsiniz:

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

429 yanıt kodlarının yeniden denenmek yerine özel durum oluşturmasını sağlamak için bu ilkeyi e-posta istemcinize ekleyin.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

E-posta gönderme katmanı sınırına ulaşıldığında özel durum oluşturma

Email API'sinin, gönderebileceğiniz e-posta iletilerinin sayısıyla ilgili sınırlamalarla azaltması vardır. Email gönderme, API Azaltma ve Zaman Aşımları'nda belirtildiği gibi dakikada ve saatte bir uygulanan sınırlara sahiptir. Bu sınırlara ulaştığınızda, çağrılarla gönderilen send sonraki e-postalar "429: Çok Fazla İstek" hata yanıtı alır. Varsayılan olarak SDK, belirli bir süre bekledikten sonra bu istekleri yeniden deneyecek şekilde yapılandırılır. Bu yanıt kodlarını yakalamak için Azure SDK ile günlüğe kaydetmeyi ayarlamanızı öneririz.

Azure İletişim Email Hizmeti'ni kullanarak gönderebileceğiniz e-posta miktarının dakika başına ve saat başına sınırları vardır. Bu sınırlara ulaştığınızda, diğer beginSend tüm çağrılar yanıt 429: Too Many Requests alır. Varsayılan olarak SDK, belirli bir süre bekledikten sonra bu istekleri yeniden deneyecek şekilde yapılandırılır. Bu yanıt kodlarını yakalamak için Azure SDK ile günlüğe kaydetmeyi ayarlamanızı öneririz.

Alternatif olarak, özel bir ilkeyi el ile tanımlayabilirsiniz:

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

429 yanıt kodlarının yeniden denenmek yerine özel durum oluşturmasını sağlamak için bu ilkeyi e-posta istemcinize ekleyin.

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

const emailClient = new EmailClient(connectionString, clientOptions);

E-posta gönderme katmanı sınırına ulaşıldığında özel durum oluşturma

Email API'sinin, gönderebileceğiniz e-posta iletilerinin sayısıyla ilgili sınırlamalarla azaltması vardır. Email gönderme, API Azaltma ve Zaman Aşımları'nda belirtildiği gibi dakikada ve saatte bir uygulanan sınırlara sahiptir. Bu sınırlara ulaştığınızda, çağrılarla gönderilen beginSend sonraki e-postalar "429: Çok Fazla İstek" hata yanıtı alır. Varsayılan olarak SDK, belirli bir süre bekledikten sonra bu istekleri yeniden deneyecek şekilde yapılandırılır. Bu yanıt kodlarını yakalamak için Azure SDK ile günlüğe kaydetmeyi ayarlamanızı öneririz.

Alternatif olarak, özel bir ilkeyi el ile tanımlayabilirsiniz:

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

429 yanıt kodunun yeniden denenmek yerine özel durum oluşturmasını sağlamak için bu yeniden deneme ilkesini e-posta istemcinize ekleyin.

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

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

E-posta gönderme katmanı sınırına ulaşıldığında özel durum oluşturma

Email API'sinin, gönderebileceğiniz e-posta iletilerinin sayısıyla ilgili sınırlamalarla azaltması vardır. Email gönderme, API Azaltma ve Zaman Aşımları'nda belirtildiği gibi dakikada ve saatte bir uygulanan sınırlara sahiptir. Bu sınırlara ulaştığınızda, çağrılarla gönderilen SendAsync sonraki e-postalar "429: Çok Fazla İstek" hata yanıtı alır. Varsayılan olarak SDK, belirli bir süre bekledikten sonra bu istekleri yeniden deneyecek şekilde yapılandırılır. Bu yanıt kodlarını yakalamak için Azure SDK ile günlüğe kaydetmeyi ayarlamanızı öneririz.

Alternatif olarak, 429 yanıt kodlarının yeniden denenmek yerine özel durum oluşturmasını sağlamak için el ile özel bir ilke tanımlayabilirsiniz.

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)

Sorun giderme

Email Teslimi

E-posta teslimi ile ilgili sorunları gidermek için, teslim ayrıntılarını yakalamak üzere e-posta tesliminin durumunu alabilirsiniz .

Önemli

Gönderme işleminin durumunu yoklayarak döndürülen başarı sonucu yalnızca e-postanın teslim için başarıyla gönderildiğini doğrular. Alıcı ucundaki teslimin durumu hakkında ek bilgi almak için e-posta olaylarını işlemeye başvurmanız gerekir.

Email Azaltma

Uygulamanızın asılı olduğunu görürseniz bunun nedeni e-posta göndermenin kısıtlanması olabilir. Bunu günlüğe kaydetme yoluyla veya özel bir ilke uygulayarak gerçekleştirebilirsiniz.

Not

Bu korumalı alan kurulumu, geliştiricilerin uygulamayı oluşturmaya başlamasına yardımcı olmaktır. Uygulama canlı yayına hazır olduğunda aşamalı olarak gönderme hacmini artırma isteğinde bulunabilirsiniz. Hız sınırlarını aşan bir ileti hacmi göndermeniz gerekiyorsa, istediğiniz gönderme sınırını yükseltmek için bir destek isteği gönderin.

Azure İletişim Hizmeti kaynaklarını temizleme

İletişim Hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Kaynakları temizleme hakkında daha fazla bilgi edinin.

Sonraki adımlar

Bu hızlı başlangıçta, Azure İletişim Hizmetleri kullanarak e-posta gönderirken durumu el ile yoklamayı öğrendiniz.

Ayrıca şunları da isteyebilirsiniz: