التشغيل السريع: طرح استثناء عند الوصول إلى حد مستوى إرسال البريد الإلكتروني

في هذه البداية السريعة، ستتعرف على كيفية طرح استثناء عند الوصول إلى حد مستوى إرسال البريد الإلكتروني باستخدام حزم SDK للبريد الإلكتروني.

طرح استثناء عند الوصول إلى حد مستوى إرسال البريد الإلكتروني

تحتوي واجهة برمجة تطبيقات البريد الإلكتروني على قيود على عدد رسائل البريد الإلكتروني التي يمكنك إرسالها. يحتوي إرسال البريد الإلكتروني على حدود مطبقة في الدقيقة والساعة كما هو مذكور في تقييد واجهة برمجة التطبيقات والمهلات. عند الوصول إلى هذه الحدود، تتلقى عمليات إرسال البريد الإلكتروني اللاحقة مع SendAsync المكالمات استجابة خطأ من "429: طلبات كثيرة جدا". بشكل افتراضي، يتم تكوين SDK لإعادة محاولة هذه الطلبات بعد انتظار فترة زمنية معينة. نوصي بإعداد التسجيل باستخدام Azure SDK لالتقاط رموز الاستجابة هذه.

بدلا من ذلك، يمكنك تعريف نهج مخصص يدويا:

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 تطرح استثناء بدلا من إعادة المحاولة.

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

EmailClient emailClient = new EmailClient(connectionString, emailClientOptions);

طرح استثناء عند الوصول إلى حد مستوى إرسال البريد الإلكتروني

تحتوي واجهة برمجة تطبيقات البريد الإلكتروني على قيود على عدد رسائل البريد الإلكتروني التي يمكنك إرسالها. يحتوي إرسال البريد الإلكتروني على حدود مطبقة في الدقيقة والساعة كما هو مذكور في تقييد واجهة برمجة التطبيقات والمهلات. عند الوصول إلى هذه الحدود، تتلقى عمليات إرسال البريد الإلكتروني اللاحقة مع send المكالمات استجابة خطأ من "429: طلبات كثيرة جدا". بشكل افتراضي، يتم تكوين SDK لإعادة محاولة هذه الطلبات بعد انتظار فترة زمنية معينة. نوصي بإعداد التسجيل باستخدام Azure SDK لالتقاط رموز الاستجابة هذه.

هناك حدود لكل دقيقة وكل ساعة لكمية رسائل البريد الإلكتروني التي يمكنك إرسالها باستخدام Azure Communication Email Service. عندما تصل إلى هذه الحدود، تتلقى أي مكالمات أخرى beginSend استجابة 429: Too Many Requests . بشكل افتراضي، يتم تكوين SDK لإعادة محاولة هذه الطلبات بعد انتظار فترة زمنية معينة. نوصي بإعداد التسجيل باستخدام Azure SDK لالتقاط رموز الاستجابة هذه.

بدلا من ذلك، يمكنك تعريف نهج مخصص يدويا:

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

أضف هذا النهج إلى عميل البريد الإلكتروني للتأكد من أن رموز الاستجابة 429 تطرح استثناء بدلا من إعادة المحاولة.

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

const emailClient = new EmailClient(connectionString, clientOptions);

طرح استثناء عند الوصول إلى حد مستوى إرسال البريد الإلكتروني

تحتوي واجهة برمجة تطبيقات البريد الإلكتروني على قيود على عدد رسائل البريد الإلكتروني التي يمكنك إرسالها. يحتوي إرسال البريد الإلكتروني على حدود مطبقة في الدقيقة والساعة كما هو مذكور في تقييد واجهة برمجة التطبيقات والمهلات. عند الوصول إلى هذه الحدود، تتلقى عمليات إرسال البريد الإلكتروني اللاحقة مع beginSend المكالمات استجابة خطأ من "429: طلبات كثيرة جدا". بشكل افتراضي، يتم تكوين SDK لإعادة محاولة هذه الطلبات بعد انتظار فترة زمنية معينة. نوصي بإعداد التسجيل باستخدام Azure SDK لالتقاط رموز الاستجابة هذه.

بدلا من ذلك، يمكنك تعريف نهج مخصص يدويا:

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 تطرح استثناء بدلا من إعادة المحاولة.

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

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

طرح استثناء عند الوصول إلى حد مستوى إرسال البريد الإلكتروني

تحتوي واجهة برمجة تطبيقات البريد الإلكتروني على قيود على عدد رسائل البريد الإلكتروني التي يمكنك إرسالها. يحتوي إرسال البريد الإلكتروني على حدود مطبقة في الدقيقة والساعة كما هو مذكور في تقييد واجهة برمجة التطبيقات والمهلات. عند الوصول إلى هذه الحدود، تتلقى عمليات إرسال البريد الإلكتروني اللاحقة مع SendAsync المكالمات استجابة خطأ من "429: طلبات كثيرة جدا". بشكل افتراضي، يتم تكوين SDK لإعادة محاولة هذه الطلبات بعد انتظار فترة زمنية معينة. نوصي بإعداد التسجيل باستخدام Azure SDK لالتقاط رموز الاستجابة هذه.

بدلا من ذلك، يمكنك تعريف نهج مخصص يدويا للتأكد من أن رموز الاستجابة 429 تطرح استثناء بدلا من إعادة المحاولة.

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)

استكشاف الأخطاء وإصلاحها

تسليم البريد الإلكتروني

لاستكشاف المشكلات المتعلقة بتسليم البريد الإلكتروني وإصلاحها، يمكنك الحصول على حالة تسليم البريد الإلكتروني لالتقاط تفاصيل التسليم.

هام

تتحقق نتيجة النجاح التي تم إرجاعها عن طريق التحقق من حالة عملية الإرسال فقط من حقيقة أنه تم إرسال البريد الإلكتروني بنجاح للتسليم. للحصول على معلومات إضافية حول حالة التسليم على نهاية المستلم، ستحتاج إلى الرجوع إلى كيفية التعامل مع أحداث البريد الإلكتروني.

تقييد البريد الإلكتروني

إذا رأيت أن تطبيقك معلق، فقد يكون ذلك بسبب تقييد إرسال البريد الإلكتروني. يمكنك التعامل مع ذلك من خلال التسجيل أو عن طريق تنفيذ نهج مخصص.

ملاحظة

إعداد بيئة الاختبار المعزولة هذا لمساعدة المطورين على البدء في إنشاء التطبيق. يمكنك طلب زيادة وحدة التخزين المرسلة تدريجيا بمجرد أن يصبح التطبيق جاهزا لبدء التشغيل. أرسل طلب دعم لرفع حد الإرسال المطلوب إذا كنت بحاجة إلى إرسال حجم رسائل يتجاوز حدود المعدل.

تنظيف موارد Azure Communication Service

إذا كنت ترغب في تنظيف وإزالة اشتراك في خدمات الاتصالات، فيمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا. تعرف على المزيد بشأن تنظيف الموارد.

الخطوات التالية

في هذه البداية السريعة، تعلمت كيفية الاستقصاء يدويا عن الحالة عند إرسال بريد إلكتروني باستخدام Azure Communication Services.

قد ترغب أيضًا فيما يلي: