استرجاع الرسائل الإلكترونية من خادم POP3

حفظ الرسائل إلى القرص دون تحليل

لتنزيل رسائل البريد من خادم POP3 دون تحليل، يمكنك استخدام الـ save_message طريقة Aspose.Email Pop3Client الفئة. يوضح مقتطف الشيفرة التالي كيفية حفظ رسالة باستخدام رقم تسلسلها، في هذه الحالة الرقم 1. الـ save_message الطريقة تحتفظ بالتنسيق الأصلي EML دون تحليل:

تحليل الرسائل قبل الحفظ

يمكنك استرجاع رسالة بريد إلكتروني محددة باستخدام الـ fetch_message طريقة الـ 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)

تصفية رسائل البريد من الخادم وفقًًا للمعايير

Aspose.Email Pop3Client class يوفر الـ list_messages() طريقة التي تسترجع جميع الرسائل من صندوق بريد. للحصول على الرسائل التي تطابق شرطًا ما فقط، استخدم المنهج المتجاوز list_messages(query) طريقة التي تأخذ MailQuery كوسيط. الـ MailQuery الفئة توفر خصائص متعددة لتحديد شروط الاستعلام، مثل التاريخ، الموضوع، المرسل، المستلم، وغيرها.

لبناء تعبير البحث، استخدم الـ MailQueryBuilder فئة. أولاً، حدّد جميع الشروط والقيود اللازمة، ثم املأ كائن MailQuery بالاستعلام الذي تم إنشاؤه بواسطة الـ MailQueryBuilder. يستخدم Pop3Client كائن MailQuery هذا لجلب المعلومات المفلترة من الخادم.

يوضح مثال الشيفرة التالي كيفية تصفية واسترجاع رسائل البريد من حساب Gmail بناءً على معايير مختلفة تشمل الموضوع، التاريخ الداخلي، المرسل، والمستلم. كما يُظهر التصفية الحسّاسة لحالة الأحرف ويشرح كيفية بناء استعلامات معقدة بكفاءة.

  1. إقامة اتصال بخادم Gmail POP3 باستخدام الـ Pop3Client فئة مع عنوان الخادم المحدد، المنفذ، اسم المستخدم، وكلمة المرور. تم ضبط خيارات الأمان إلى AUTO للاتصال الآمن.
  2. إنشاء مثيل من الـ MailQueryBuilder لبناء معايير البحث لتصفية الرسائل.
  3. تصفية حسب الموضوع:
    • تم تحديد رسائل بريد تحتوي على "Newsletter" في سطر الموضوع كشرط للفلتر.
  4. تصفية حسب التاريخ الداخلي:
    • تم تعيين فلتر للرسائل المستلمة في تاريخ اليوم.
    • تم إضافة فلتر إضافي لاسترجاع رسائل البريد المستلمة خلال الأسبوع الماضي.
  5. تصفية حسب المرسل:
    • تم تطبيق فلاتر للبحث عن رسائل البريد من عنوان بريد إلكتروني معين (saqib.razzaq@127.0.0.1) ولتضمين رسائل من نطاق معين (SpecificHost.com).
  6. تصفية حسب المستلم:
    • تم تحديد فلتر للعثور على رسائل البريد المرسلة إلى مستلم معين.
  7. دمج الاستعلامات باستخدام عامل OR للبحث عن رسائل بريد إما تطابق موضوعًا معينًا أو تُرسل من عنوان محدد.
  8. تصفية حساسة لحالة الأحرف:
    • تم تحديد فلتر حساس لحالة الأحرف للموضوع الذي يحتوي على "Newsletter" (مُشار إليه بالمعامل True).
  9. قائمة الرسائل:
    • يتم استدعاء طريقة list_messages() مع الاستعلام المُنشأ لجلب الرسائل المفلترة من صندوق البريد.
  10. أخيرًا، اطبع عدد الرسائل المفلترة.

تصفية البريد الإلكتروني حسب التاريخ

لإحضار الرسائل حسب تاريخ التسليم، استخدم 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)