دریافت ایمیل‌ها از سرور POP3

ذخیره ایمیل‌ها بر روی دیسک بدون تجزیه

برای دانلود پیام‌های ایمیل از سرور POP3 بدون تجزیه، می‌توانید از save_message متد Aspose.Email Pop3Client کلاس. قطعه کد زیر نشان می‌دهد چگونه پیام را با استفاده از شماره توالی‌اش، در این مثال شماره ۱، ذخیره کنید. 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 کلاس فراهم می‌کند list_messages() متد تمام پیام‌های یک صندوق‌پست را دریافت می‌کند. برای دریافت تنها پیام‌هایی که با شرطی مطابقت دارند، از نسخهٔ بارگذاری‌شدهٔ list_messages(query) متدی که می‌گیرد MailQuery به‌عنوان آرگومان. این MailQuery کلاس ویژگی‌های مختلفی برای مشخص کردن شرایط پرس‌وجو فراهم می‌کند، مثلاً تاریخ، موضوع، فرستنده، گیرنده و غیره.

برای ساختن عبارت جستجو، از MailQueryBuilder کلاس. ابتدا تمام شرایط و محدودیت‌های لازم را تعریف کنید، سپس شیء MailQuery را با پرس‌وجویی که توسط MailQueryBuilder. کلاینت Pop3Client از این شیء MailQuery برای دریافت اطلاعات فیلترشده از سرور استفاده می‌کند.

نمونه کد زیر نشان می‌دهد چگونه ایمیل‌ها را از حساب جیمیل بر اساس معیارهای مختلف شامل موضوع، تاریخ داخلی، فرستنده و گیرنده فیلتر و بازیابی کنید. همچنین فیلتر حساس به حروف را نشان می‌دهد و روش ساختن پرس‌وجوهای پیچیده به‌صورت کارآمد را به‌نمایش می‌گذارد.

  1. اتصال به سرور 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)