חיפוש וסינון הודעות IMAP בפייתון

כדי לאחזר את כל ההודעות מתיבת דואר Aspose.Email מספקת את השיטה ’list_messages’ של ה- ImapClient מחלקה. כדי לקבל רק הודעות העומדות בתנאים ספציפיים, ניתן להשתמש בשיטה העומס ’list_messages’ שמקבלת MailQuery כארגומנט. ה- MailQuery מחלקה מציעה מגוון מאפיינים כדי להגדיר תנאים אלו, כגון תאריך, נושא, שולח ונמען.

דוגמת הקוד הראשונה מדגימה כיצד לסנן הודעות לפי תאריך ונושא יחד. דוגמאות נוספות מציגות סינון לפי קריטריונים אחרים ובניית שאילתות מורכבות יותר. בנוסף, ה-API תומך בקריטריוני חיפוש המבדילים בין אותיות רישיות לאותיות קטנות לצורך סינון מדויק ומאפשר לך לציין את קידוד מחרוזת החיפוש בעת סינון הודעות מהתיבה.

סנן והבא הודעות משרת IMAP

בנה שאילתת IMAP פשוטה

השתמש בקטע הקוד הבא כדי להתחבר לתיבת דואר IMAP ולקבל הודעות שהגיעו היום וכוללות את המילה "newsletter" בנושא.

  1. התחבר לשרת IMAP באמצעות פורט 993 עם שם המשתמש והסיסמה.
  2. בחר את תיקיית "Inbox" כדי לעבוד עם הודעות נכנסות.
  3. צור מופע של בונה שאילתות Imap לבניית שאילתת חיפוש.
  4. ציין קריטריוני חיפוש, לדוגמה שהנושא של ההודעות יכיל "Newsletter" וכי התאריך הפנימי יתאים לתאריך של היום.
  5. צור את שאילתת החיפוש על ידי קבלתה מהבונה.
  6. השתמש בשאילתה כדי לרשום הודעות העומדות בתנאים.
  7. הדפס את סך כל ההודעות התואמות לתנאי החיפוש.

בניית קריטריוני חיפוש מורכבים

Aspose.Email גם מאפשרת ליצור קריטריוני חיפוש מורכבים לשאילתות ולסינון הודעות דוא"ל כגון תאריך משלוח, בטווח, שולח ספציפי, תחום ספציפי, או נמען ספציפי. למטרה זו, השתמש ב- MailQueryBuilder המחלקה ותכונותיה. דוגמאות הקוד שלהלן יראו לך איך לאחזר הודעות לפי קריטריונים ספציפיים.

סינון הודעות דוא"ל לפי תאריך היום

כדי לאחזר הודעות לפי תאריך משלוח, השתמש במאפיין ‘internal_date’ של MailQueryBuilder מחלקה כפי שמוצג בדוגמת הקוד למטה:

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

סינון הודעות לפי טווח תאריכים

כדי לאחזר הודעות בטווח תאריכים, השתמש במאפיין ‘internal_date’ עם ציון הטווח כפי שמופיע בדוגמת הקוד למטה:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))

סינון הודעות דוא"ל לפי שולח ספציפי

כדי לקבל הודעות משולח ספציפי, השתמש במאפיין ‘from_address’ של ה- MailQueryBuilder מחלקה כפי שמוצג בדוגמת הקוד למטה:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

סינון הודעות לפי דומיין ספציפי

כדי לאחזר הודעות מדומיין ספציפי, השתמש במאפיין ‘from_address’ כפי שמופיע בדוגמת הקוד למטה:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")

סינון הודעות לפי נמען ספציפי

כדי לאחזר הודעות למקבל ספציפי, השתמש במאפיין ’to’ כפי שמופיע בדוגמת הקוד למטה:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")

סינון הודעות לפי תאריך פנימי

בנה שאילתה על תנאים ספציפיים כגון "internal date" ו‑"subject contains". "internal date" מתייחסת לתאריך ולזמן שבהם הודעת דוא"ל התקבלה או נוספה לשרת הדוא"ל וניתן להגדיר אותה באמצעות המאפיין ‘internal_date’ של ה- בונה שאילתות Imap מחלקה. קוד הדוגמה למטה מדגים כיצד לאחזר הודעות ספציפיות מתיבת דואר נכנס על פי נושא ותאריך:

import aspose.email as ae
from datetime import datetime

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

# Set conditions, Subject contains "Newsletter", Emails that arrived today
builder = ae.clients.imap.ImapQueryBuilder()
builder.subject.contains("Newsletter")
builder.internal_date.on(datetime.now())

# Build the query and Get list of messages
query = builder.get_query()
messages = client.list_messages(query)
for info in messages:
    print(f"Internal Date: {info.internal_date}")

סינון הודעות לפי דגלי מילות מפתח מותאמות

צור שאילתה לחיפוש בתיבת דואר IMAP של הודעות המכילות דגלי מילות מפתח מותאמות, במיוחד "custom1" ו‑"custom2". כדי לבנות שאילתה, השתמש ב- בונה שאילתות Imap מחלקה המסננת הודעות בעת קבלתן משרת IMAP.

להתחלה, צור אינסטנס של בונה השאילתות. באמצעות ה- has_flags שיטה, הוסף תנאים לכלול רק הודעות שנושאות את דגלי המפתח IMAP המוגדרים. מילות מפתח מותאמות ב‑IMAP, המכונות גם דגלים שהוגדרו על ידי המשתמש, מאפשרות למשתמשים לתייג או לסווג הודעות למטרות שונות, כגון סימון מצבן.

קוד הדוגמה הבא ממחיש כיצד ליצור שאילתה לאחזור הודעות על פי דגלי מילות מפתח מותאמות:


builder = ae.clients.imap.ImapQueryBuilder()
builder.has_flags(ae.clients.imap.ImapMessageFlags.keyword("custom1"))
builder.has_flags(ae.clients.imap.ImapMessageFlags.keyword("custom2"))

בניית שאילתות מורכבות

לפעמים יש צורך לקיים יותר משאילתה אחת. Aspose.Email מאפשר זאת על ידי שילוב שאילתות בכמה משפטים. צור MailQueryBuilder אובייקט ולהשתמש במאפייניו לבניית שאילתות ספציפיות.

שילוב שאילתות עם AND

קוד הדוגמה הבא מציג כיצד לשלב שאילתות עם AND.

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")

שילוב שאילתות עם OR

קטע הקוד הבא מראה כיצד לשלב שאילתות עם OR.


builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))

החלת מסננים רגישים לרישיות

ה‑API גם מספק את היכולת לסנן אימיילים מתיבת הדואר לפי קריטריון רגיש לאותיות. המתודות הבאות של StringComparisonField מחלקה מספקת את היכולת לחפש אימיילים עם דגלים רגישים לאותיות גדולות/קטנות.

  • StringComparisonField.contains(value, ignore_case)
  • StringComparisonField.equals(value, ignore_case)
  • StringComparisonField.not_contains(value, ignore_case)
  • StringComparisonField.not_equals(value, ignore_case)

קטע הקוד הבא מראה כיצד ליישם אפשרות זו בפרויקט שלך:


builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)

בצע שאילתות חיפוש מותאמות

צור שאילתת חיפוש עבור תיבת דואר IMAP המסננת הודעות על פי קריטריון חיפוש מותאם של Gmail — במיוחד הודעות עם קבצים מצורפים.

התחל ביצירת אינסטנס של בונה שאילתות Imap, המשמש לבניית שאילתות חיפוש IMAP מורכבות. השתמש ב- custom_search שיטה להוספת מחרוזת חיפוש ייחודית ל‑Gmail לבונה השאילתות.

מחרוזת החיפוש X-GM-RAW "has:attachment" מנצלת את תכונת IMAP המורחבת של Gmail X-GM-RAW, מה שמאפשר להשתמש בתחביר חיפוש חזק של Gmail בתוך שאילתות IMAP. כאן, האופרטור has:attachment מחזיר את כל הודעות הדוא"ל המכילות קבצים מצורפים.

קוד הדוגמה הבא מדגים כיצד לסנן הודעות כדי לקבל את כל ההודעות עם קבצים מצורפים:


builder = ae.clients.imap.ImapQueryBuilder()
builder.custom_search("X-GM-RAW \"has:attachment\"")

mailQuery = builder.get_query()

שיטה זו מאפשרת סינון מתקדם ייחודי ל‑Gmail כדי לאחזר הודעות ממוקדות.