تمكين امتدادات IMAP

دعم امتدادات IMAP

توفر Aspose.Email API دعمًا لمجموعة من امتدادات بروتوكول IMAP. تتيح هذه الامتدادات عمليات متقدمة مثل تحديد تطبيقات العميل واسترجاع بيانات وصفية تفصيلية لصندوق البريد. على الرغم من أن ليس جميع خوادم البريد تدعم هذه الميزات، إلا أن العديد من الخدمات الشهيرة مثل Gmail تدعمها.

توضح هذه المقالة كيفية استخدام امتدادات IMAP التالية مع ImapClient فئة في Aspose.Email:

  • أمر IMAP ID

  • أمر IMAP LIST-EXTENDED

استخدام أمر IMAP ID

يقدم هذا الأمر ملاحظات حول ما إذا كان الخادم يدعم امتداد IMAP ID ويعيد تفاصيل تعريفية مُهيكلة من الخادم. يمكن أن يكون ذلك مفيدًا للتسجيل، التشخيص، وتخصيص سلوك الخادم.

يوضح مثال الشيفرة التالي كيفية استخدام مكتبة Aspose.Email للتفاعل مع خادم IMAP، خاصة لاسترجاع معلومات تعريف الخادم باستخدام أمر ID:

import aspose.email as ae

with ae.clients.imap.ImapClient("imap.gmail.com", 993, "username", "password") as client:

    # Set security options
    client.security_options = ae.clients.SecurityOptions.AUTO

    # Check if ID command is supported
    print(client.id_supported)

    # Send identification info to the server
    server_identification_info1 = client.introduce_client()
    server_identification_info2 = client.introduce_client(ae.clients.imap.ImapIdentificationInfo.default_value)

    # Display server response
    print(server_identification_info1)
    print(server_identification_info2)
    print(server_identification_info1.name)
    print(server_identification_info1.vendor)
    print(server_identification_info1.support_url)
    print(server_identification_info1.version)

استخدام أمر IMAP LIST-EXTENDED

يتيح أمر IMAP LIST-EXTENDED (المعرّف في RFC 5258) للعملاء استرجاع هياكل المجلدات التفصيلية والبيانات الوصفية، مثل ما إذا كانت المجلدات تحتوي على مجلدات فرعية. هذا مفيد بشكل خاص للعملاء الذين يديرون هياكل صناديق بريد معقدة.

يوضح مثال الشيفرة التالي كيفية سرد المجلدات في Gmail باستخدام أمر LIST الموسع والتحقق من المجلدات التي تحتوي على مجلدات فرعية:

import aspose.email as ae

with ae.clients.imap.ImapClient("imap.gmail.com", 993, "username", "password") as client:
    folder_info_col = client.list_folders("*")
    print("Extended List Supported:", client.extended_list_supported)

    for folder_info in folder_info_col:
        folder_name = folder_info.name

        if folder_name == "[Gmail]/All Mail":
            print("Has Children:", folder_info.has_children)
        elif folder_name == "[Gmail]/Bin":
            print("Bin has children?", folder_info.has_children)
        elif folder_name == "[Gmail]/Drafts":
            print("Drafts has children?", folder_info.has_children)
        elif folder_name == "[Gmail]/Important":
            print("Important has Children?", folder_info.has_children)
        elif folder_name == "[Gmail]/Sent Mail":
            print("Sent Mail has Children?", folder_info.has_children)
        elif folder_name == "[Gmail]/Spam":
            print("Spam has Children?", folder_info.has_children)
        elif folder_name == "[Gmail]/Starred":
            print("Starred has Children?", folder_info.has_children)