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

קבלת מידע על תיבת הדואר

אנו יכולים לקבל מידע על תיבת הדואר כגון מספר ההודעות וגודל תיבת הדואר באמצעות המתודות GetMailBoxSize() ו‑GetMailBoxInfo().

  • מתודת GetMailBoxSize() מחזירה את גודל תיבת הדואר בבייטים.
  • מתודת GetMailBoxInfo() מחזירה אובייקט מסוג Pop3MailBoxInfo.

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

  1. צור Pop3Client.
  2. התחבר לשרת POP3.
  3. קבל את הגודל של תיבת הדואר.
  4. קבל מידע על תיבת הדואר.
  5. קבל את מספר ההודעות בתיבת הדואר.
  6. קבל את הגודל הכבוש.

קבלת ספירת אימיילים בתיבת הדואר

קוד הדוגמה הבא מראה כיצד לספור את הודעות הדוא"ל בתיבת הדואר.

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

קבלת מידע על כותרות דוא"ל

כותרות אימייל יכולות לספק לנו מידע על הודעת אימייל שנוכל להשתמש בו כדי решить אם לאחזר את כל ההודעה. בדרך כלל, מידע בכותרת כולל שולח, נושא, תאריך קבלה וכו’ (כותרות האימייל מתוארות בפירוט ב‑Customizing Email Headers. נושא זה מתמקד בשליחת אימייל עם SMTP, אך מידע כותרת האימייל נשאר רלוונטי לאימיילים ב‑POP3). הדוגמאות הבאות מראות כיצד לאחזר כותרות אימייל משרת POP3 באמצעות מספר הסדרה של ההודעה.

קבלת הודעות דוא"ל

רכיב המחלקה Aspose.Email.Pop3 מספק את היכולת לאחזר הודעות אימייל משרת POP3 ולנתח אותן ל‑instance של MailMessage בעזרת רכיבי MailMessage. מחלקת MailMessage מכילה מספר מאפיינים ומתודות למניפולציית תוכן האימייל. באמצעות פונקציית FetchMessage של המחלקה Pop3Client, ניתן לקבל instance של MailMessage ישירות משרת POP3. קטע הקוד הבא מראה כיצד לאחזר הודעת אימייל מלאה משרת POP3.

שילוף מידע מסכם של הודעה באמצעות מזהה ייחודי

לקוח ה‑POP3 של ה‑API יכול לאחזר מידע סיכום של הודעה מהשרת באמצעות המזהה הייחודי של ההודעה. זה מספק גישה מהירה למידע הקצר של ההודעה בלי תחילה לאחזר את ההודעה המלאה מהשרת. קטע הקוד הבא מראה כיצד לאחזר מידע סיכום של הודעה.

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

לפעולות בעלות עומס גבוה, Aspose.Email מציע את המאפיין ‘use_multi_connection’ של Pop3Client מחלקה לשימוש בריבוי חיבורים בעת שליפת אימיילים. עם זאת, שימוש במצב זה אינו מחייב שהביצועים ישתפרו. קטע הקוד הבא מראה כיצד להקים חיבור לשרת POP3, להגדיר את הלקוח לאפשר עד 5 חיבורים מקבילים ולהפעיל מצב ריבוי חיבורים כדי לאחזר מידע על ההודעות הקיימות בשרת:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_coll = client.list_messages()

הבאת הודעות מהשרת ושמירתן לדיסק

שמירת הודעה לדיסק ללא פירוש

אם ברצונך להוריד הודעות אימייל משרת POP3 ללא ניתוחן, השתמש בפונקציית SaveMessage של מחלקת Pop3Client. פונקציית SaveMessage אינה מנתחת את הודעת האימייל ולכן היא מהירה יותר מפונקציית FetchMessage. קטע הקוד הבא מראה כיצד לשמור הודעה לפי מספר הסדרה שלה, במקרה זה מספר 1. מתודת SaveMessage שומרת את ההודעה בפורמט EML המקורי ללא ניתוח.

פירוש הודעה לפני שמירה

השתמש במתודה ‘fetch_message’ של אובייקט ה‑client שנוצר באמצעות Pop3Client מחלקה לאחזור הודעה עם מספר סדר ספציפי. דוגמת הקוד למטה מדגימה כיצד לאחזר הודעה מסוימת ולשמור אותה תוך שימוש בנושא שלה כשם הקובץ באמצעות קריאה למתודה ‘save’ על האובייקט msg:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)

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

מחלקת Pop3Client, המתוארת במדריך Connecting to a POP3 Server, מספקת את המתודה list_messages() שמחזירה את כל ההודעות מתיבת הדואר. כדי לקבל רק הודעות התואמות לתנאי מסוים, השתמש במתודה העומסית ListMessages() המקבלת MailQuery כפרמטר. מחלקת MailQuery מציעה מגוון מאפיינים לציון תנאי החיפוש, כגון תאריך, נושא, שולח, מקבל וכד’. מחלקת MailQueryBuilder משמשת לבניית ביטוי החיפוש. ראשית מוגדרים כל התנאים וההגבלות, לאחר מכן ממלאים את MailQuery עם השאילתה שנוצרת על ידי MailQueryBuilder. אובייקט המחלקה MailQuery משמש את Pop3Client לחילוץ המידע המסונן מהשרת. מאמר זה מציג כיצד לסנן הודעות אימייל מתיבת דואר. הדוגמה הראשונה ממחישה סינון הודעות על פי תאריך ונושא. אנו מציגים גם סינון על קריטריונים נוספים וכיצד לבנות שאילתות מורכבות יותר. בנוסף, מוצגת השימוש במסנן תאריך ושעה כדי לאחזר אימיילים ספציפיים מהתיבה. כמו כן, מוסבר כיצד להחיל סינון רגיש לאותיות גדולות/קטנות.

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

כדי לסנן הודעות מתיבת דואר:

  1. התחבר והיכנס לשרת POP3.
  2. צור מופע של MailQuery והגדר את המאפיינים הרצויים.
  3. קרא למתודה Pop3Client.list_messages(MailQuery query) והעבר את MailQuery בפרמטרים כדי לקבל רק את ההודעות המסוננות.

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

קבלת הודעות העונות לקריטריונים ספציפיים

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

  • אחזור הודעות לפי תאריך מסירה.
  • אחזור הודעות בטווח.
  • אחזור הודעות משולח ספציפי.
  • אחזור הודעות מדומיין ספציפי.
  • אחזור הודעות למקבל ספציפי.

תאריך היום

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

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’ כפי שמופיע בדוגמת הקוד למטה:

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

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

לפעמים יש צורך לקיים יותר משאילתה אחת. 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.

import aspose.email as ae

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

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

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

מתודה Aspose.Email.StringComparisonField.contains(value, ignore_case) מתודה Aspose.Email.StringComparisonField.equals(value, ignore_case) מתודה Aspose.Email.StringComparisonField.not_contains(value, ignore_case) מתודה Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

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

import aspose.email as ae

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