אחזור ורשימת הודעות דוא"ל משרת IMAP

רשימת הודעות מתיבת הדואר

השיטה ’list_messages’ של ה- ImapClient מחלקה המאחזרת רשימה של כל ההודעות מהתיקייה שנבחרה כרגע (במקרה זה, "Inbox"). רשימה זו מכילה אובייקטים של מטה‑דאטה של הודעות, שבדרך כלל כוללים מידע כגון מזהי הודעה, מספרי רצף, UID, ולעיתים נתוני סיכום כגון נושאים או מידע על השולח.

קטע הקוד הבא מדגים כיצד לאחזר את המטה‑דאטה של ההודעות מהתיקייה "Inbox", ולהדפיס את המספר הכולל של ההודעות שהיא מכילה:

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

ה מידע הודעה Imap מחלקה מציעה דרך נוחה לגשת ל‑MIME MessageId לצורך זיהוי הודעות ללא צורך בחילוץ כל תוכן ההודעה. למטה נמצא קטע קוד המדגים כיצד לרשום MIME MessageId:

רשימת הודעות עם מרובה חיבורים

ה 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)

שימו לב שהשימוש במצב זה אינו בהכרח מוביל לשיפור ביצועים.

אחזור הודעות לפי מספר רצף או מזהה ייחודי

ממשק ה‑API של 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 מחלקה עם הפרמטרים הדרושים (host, port, username, password) להתחברות לשרת 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’ של מידע הודעה Imap מחלקה לקבלת כותרת זו. קטע הקוד שלמטה מדגים את השימוש במאפיין וניתן להשתמש בו כחלק ממערכת לאוטומציה של תהליך הביטול מדוא"לים לא רצויים:

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