جلب وإدراج رسائل البريد الإلكتروني من خادم IMAP

إدراج الرسائل من صندوق البريد

طريقة ’list_messages’ للـ ImapClient الفئة تجلب قائمة بجميع الرسائل من المجلد المحدد حاليًا ("Inbox" في هذه الحالة). تحتوي هذه القائمة على كائنات بيانات تعريف الرسائل، والتي عادةً ما تشمل معلومات مثل معرّفات الرسائل، أرقام التسلسل، UIDs، وربما بيانات ملخص مثل عناوين الموضوع أو معلومات المرسل.

يظهر مقطع الشيفرة التالي كيفية استرجاع بيانات تعريف الرسائل من البريد الوارد، وطبعة العدد الإجمالي للرسائل التي يحتويها:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

client.select_folder("Inbox")

messages = client.list_messages()
print(f"Total Messages: {len(messages)}")

إدراج الرسائل مع دعم التجزئة

في السيناريوهات التي يحتوي فيها خادم البريد على عدد كبير من الرسائل في صندوق البريد، غالبًا ما يكون من المرغوب فيه إدراج أو استرجاع الرسائل مع دعم التجزئة. الـ Aspose.Email ImapClient الفئة تسمح لك باسترجاع الرسائل من الخادم مع دعم التجزئة.

إدراج الرسائل بشكل متكرر

يسمح بروتوكول IMAP بالقائمة المتكررة للرسائل من مجلد صندوق البريد. كما يتيح إمكانية إدراج الرسائل من المجلدات الفرعية أيضًا. يوضح مقطع الشيفرة التالي كيفية إدراج الرسائل بشكل متكرر:

إدراج معرفات رسائل MIME

الـ ImapMessageInfo الفئة تقدم طريقة مريحة للوصول إلى MIME MessageId لتحديد الرسائل دون الحاجة لاستخلاص محتوى الرسالة بالكامل. فيما يلي مقطع شيفرة يوضح كيفية إدراج MIME MessageId:

إدراج الرسائل مع MultiConnection

الـ ImapClient الفئة تقدم خاصية use_multi_connection، التي تمكّن من استخدام اتصالات متعددة للعمليات ذات الأحمال الثقيلة. بالإضافة إلى ذلك، يمكنك تحديد عدد الاتصالات في وضع متعدد الاتصالات باستخدام خاصية connections_quantity. يوضح مقطع الشيفرة التالي كيفية استخدام وضع متعدد الاتصالات لإدراج الرسائل:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

client.select_folder("Inbox")
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE

message_info_col = client.list_messages(True)

يرجى ملاحظة أن استخدام هذا الوضع لا يؤدي بالضرورة إلى زيادة الأداء.

استرجاع الرسائل حسب رقم التسلسل أو المعرف الفريد

تسمح لك واجهة Aspose.Email بإنشاء قائمتين من الرسائل، إحداهما تحتوي على أرقام التسلسل والأخرى تحتوي على المعرفات الفريدة لجميع الرسائل في البريد الوارد. لجلب الرسائل من خادم IMAP حسب معرفاتها، استخدم طريقة fetch_messages للـ ImapClient فئة. يوضح مقطع الشيفرة أدناه كيفية إدراج الرسائل حسب المعرفات:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

# List messages
message_info_col = client.list_messages()
print("ListMessages Count:", message_info_col.count)

# Get sequence numbers and unique IDs
sequence_number_ar = [mi.sequence_number for mi in message_info_col]
unique_id_ar = [mi.unique_id for mi in message_info_col]

# Fetch messages by sequence number
fetched_messages_by_snum = client.fetch_messages(sequence_number_ar)
print("FetchMessages-sequenceNumberAr Count:", len(fetched_messages_by_snum))

# Fetch messages by UID
fetched_messages_by_uid = client.fetch_messages(unique_id_ar)
print("FetchMessages-uniqueIdAr Count:", len(fetched_messages_by_uid))

الحصول على الرسائل بترتيب تنازلي

يتم إنجاز المهمة بتعريف إعدادات التجزئة لاسترجاع الرسائل. لهذا الغرض، استخدم خاصية ascending_sorting للـ PageSettings فئة هي جزء من وحدة عميل IMAP. قم بتعيين الخاصية ascending_sorting على الـ PageSettings تعيين الخاصية إلى False. هذا يشير إلى أنه يجب فرز الرسائل ترتيبًا تنازليًا افتراضيًا أثناء الاسترجاع. يوضح مقطع الشيفرة التالي كيفية استرجاع الرسائل بترتيب تنازلي:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

page_settings = ae.clients.imap.PageSettings
page_settings.ascending_sorting = False
page_info = client.list_messages_by_page(5, page_settings)
messages = page_info.items

for message in messages:
    print(message.subject)

جلب الرسائل من الخادم وحفظها على القرص

الـ ImapClient الفئة يمكنها جلب الرسائل من خادم IMAP وحفظها بصيغة EML على قرص محلي. الخطوات التالية مطلوبة لحفظ الرسائل على القرص:

  1. استخدم الـ ImapClient فئة مع المعلمات الضرورية (المضيف، المنفذ، اسم المستخدم، كلمة المرور) للاتصال بخادم IMAP.
  2. اختر المجلد المطلوب باستدعاء طريقة select_folder (مثال: "Inbox")
  3. استرجع الرسائل عبر التكرار عليها باستخدام طريقة list_messages.
  4. لحفظ الرسائل، لكل رسالة، استخدم طريقة save_message مع تحديد الدليل، وإضافة المعرف الفريد إلى اسم الملف لضمان التفرد.

يعرض مقطع الشيفرة التالي كيفية جلب رسائل البريد الإلكتروني من خادم وحفظها:

حفظ الرسائل بصيغة MSG

لحفظ رسائل البريد بصيغة MSG، استدعِ طريقة fetch_message للـ ImapClient فئة. تُعيد الرسالة ككائن من الـ MailMessage فئة. يمكن بعد ذلك استدعاء طريقة MailMessage.save() لحفظ الرسالة بصيغة MSG. يوضح مقطع الشيفرة التالي كيفية حفظ الرسائل بصيغة MSG.

استرجاع معلمات إضافية للرسالة (معلومات ملخصة)

يظهر مقطع الشيفرة التالي كيفية التفاعل مع خادم البريد باستخدام Aspose.Email ImapClient لإرسال ومعالجة رسائل البريد الإلكتروني. يستخدم الشيفرة معرّف الرسالة UID لاسترجاع معلومات ملخصية مع معلمات إضافية ("X-GM-MSGID", "X-GM-THRID"). يتم استرجاع معلومات مماثلة باستخدام رقم التسلسل.

الحصول على رأس List-Unsubscribe

عادةً ما يتم تضمين رأس "ListUnsubscribe" في رؤوس رسائل البريد الإلكتروني التي تُرسل عبر قوائم البريد أو الأنظمة البريدية الآلية. يوفر رابطًا أو عنوان بريد إلكتروني يمكن للمستلمين استخدامه لإلغاء الاشتراك من قائمة البريد أو الرسائل الآلية. توفر Aspose.Email خاصية ’list_unsubscribe’ لـ ImapMessageInfo فئة لاسترجاع هذا الرأس. يوضح مقتطف الشيفرة أدناه استخدام الخاصية ويمكن استخدامه كجزء من نظام لأتمتة عملية إلغاء الاشتراك من الرسائل غير المرغوب فيها:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

message_info_col = client.list_messages()

# Iterate through each message
for imap_message_info in message_info_col:
    print("ListUnsubscribe Header:", imap_message_info.list_unsubscribe)

الحصول على معلومات تعريف الرسالة

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

تُستخدم الميزات التالية للتفاعل مع صندوق بريد IMAP:

يظهر مقطع الشيفرة التالي كيفية الحصول على معلومات تعريف حول الرسائل:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

msg_infos = client.list_messages("INBOX")

for msg_info in msg_infos:
    # fetch by sequence number
    msg = client.fetch_message(msg_info.sequence_number)

    # fetch by unique id
    msg = client.fetch_message(msg_info.unique_id)

إدراج المرفقات من رسائل بريد IMAP

للحصول على معلومات حول المرفقات مثل الاسم والحجم دون جلب بيانات المرفق، استخدم موارد المكتبة التالية:

  • ImapAttachmentInfo فئة - تمثل معلومات مرفق (الحجم، الاسم، نوع الوسائط).

  • ImapAttachmentInfoCollection فئة - تمثل مجموعة الـ ImapAttachmentInfo.

  • طريقة list_attachments(sequence_number) للـ ImapClient فئة - تحصل على مجموعة قابلة للتكرار أو تجميع معلومات المرفقات للرسالة.

توضح عينة الشيفرة أدناه كيفية إدراج المرفقات لكل رسالة بريد إلكتروني باستخدام Aspose.Email ImapClient:

# List messages
message_info_col = client.list_messages()

# Iterate through each message
for message_info in message_info_col:
    print(f"Attachments for message with sequence number {message_info.sequence_number}:")

    # List attachments for the current message
    attachment_info_col = client.list_attachments(message_info.sequence_number)

    # Iterate through each attachment
    for attachment_info in attachment_info_col:
        print(f"Attachment: {attachment_info.name} (size: {attachment_info.size})")