اتصال به سرورهای IMAP در پایتون

Aspose.Email برای پایتون از طریق .NET شامل ImapClient کلاس، که به توسعه‌دهندگان امکان اتصال به سرورهای ایمیل با استفاده از IMAP (پروتکل دسترسی به پیام اینترنتی) را می‌دهد. این کلاس مدیریت امن و کارآمد ایمیل‌ها را در برنامه‌های پایتون فراهم می‌کند، شامل دریافت، خواندن, جابه‌جایی, حذف و به‌روزرسانی پیام‌های ایمیل.

با استفاده از کلاینت IMAP می‌توانید کاربران را احراز هویت کنید، پوشه‌های صندوق پستی را مدیریت کنید، از طریق SSL متصل شوید، زمان‌سوت‌های سفارشی تنظیم کنید و به حساب‌های ایمیل از طریق سرورهای پروکسی یا احراز هویت CRAM‑MD5 دسترسی پیدا کنید.

اتصال پایه IMAP

برای اتصال به سرور IMAP با استفاده از Aspose.Email، این سه گام ساده را دنبال کنید:

  1. یک نمونه از ImapClient کلاس.
  2. نام میزبان، پورت، نام کاربری و رمز عبور را تعیین کنید.
  3. گزینه امنیتی مطلوب را مشخص کنید.

نمونه کد زیر نشان می‌دهد چگونه به‌صورت برنامه‌نویسی به سرور IMAP متصل شوید:

import aspose.email as ae

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

فعال‌سازی SSL برای اتصالات IMAP

برای اتصال به سرور IMAP با پشتیبانی از SSL، مقدار security_options ویژگی برای SSLImplicit:

import aspose.email as ae

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

# Set the security mode to implicit
client.security_options = ae.clients.SecurityOptions.SSL_EXPLICIT

اتصال از طریق پروکسی SOCKS

Aspose.Email از نسخه‌های SOCKS 4، 4a و 5 برای اتصالات مبتنی بر پروکسی پشتیبانی می‌کند. با استفاده از مراحل زیر به یک پروکسی SOCKS متصل شوید:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", "username", "password")
client.security_options = ae.clients.SecurityOptions.AUTO

proxy = ae.clients.SocksProxy("192.168.203.142", 1080, ae.clients.SocksVersion.SOCKS_V5)
client.proxy = proxy

client.select_folder("Inbox")

اتصال به سرور از طریق پروکسی HTTP

Aspose.Email همچنین امکان اتصال IMAP از طریق پروکسی HTTP را فراهم می‌کند:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", "username", "password")
client.proxy = ae.clients.HttpProxy("18.222.124.59", 8080)
client.select_folder("Inbox")

دسترسی فقط‑خواندنی به صندوق پستی

برای جلوگیری از تغییر محتویات صندوق پستی، حالت فقط‑خواندنی را فعال کنید. ویژگی read_only تنظیم ویژگی به True نشان می‌دهد که تغییرات مجاز نیستند. نمونه کد زیر نشان می‌دهد چگونه این ویژگی را در یک پروژه استفاده کنید:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd")
client.security_options = ae.clients.SecurityOptions.SSL_EXPLICIT
client.read_only = True

استفاده از احراز هویت CRAM-MD5

برای افزایش امنیت، کلاینت را طوری تنظیم کنید که از احراز هویت CRAM-MD5 استفاده کند:

نمونه کد زیر نشان می‌دهد چگونه کلاینت را طوری پیکربندی کنید که CRAM-MD5 را به‌عنوان یکی از روش‌های احراز هویت پشتیبانی‌شده برای اتصال به سرور IMAP بپذیرد:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd")
client.allowed_authentication = ae.clients.imap.ImapKnownAuthenticationType.CRAM_MD5

تنظیم زمان‌سوت عملیات

از انتظار نامحدود کلاینت جلوگیری کنید با تنظیم زمان‌سوت (به میلیثانیه):

قطعه کد زیر نشان می‌دهد چگونه یک بازه زمان‌سوت 60,000 میلیثانیه (60 ثانیه) برای انتظار کلاینت برای پاسخ سرور تنظیم کنید:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
#  60 seconds
client.timeout = 60000

تنظیم زمان‌سوت خوش‌آمدگویی

مدت زمان انتظار کلاینت در زمان دست‌انداز اولیه با سرور ایمیل را کنترل کنید.

قطعه کد زیر نشان می‌دهد چگونه زمان‌سوت خوش‌آمدگویی را با استفاده از ویژگی greeting_timeout کلاس محدود کنید ImapClient کلاس:

import aspose.email as ae

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

client.greeting_timeout = 4000
client.select_folder(ae.clients.imap.ImapFolderInfo.IN_BOX)

استفاده از TLS با کلاینت IMAP

Aspose.Email از TLS و SSL برای ارتباط امن پشتیبانی می‌کند. از supported_encryption ویژگی برای تعیین نسخه‌های پروتکل قابل قبول.

توجه: شما می‌توانید فقط نسخه‌های پروتکل را تنظیم کنید که توسط .NET Framework پشتیبانی می‌شوند. اگر برخی از نسخه‌های پروتکل توسط نسخه فعلی .NET Framework شما پشتیبانی نشوند، نادیده گرفته و کنار گذاشته می‌شوند. این ممکن است منجر به کاهش سطح امنیت TLS شود. در این حالت، استثناها تولید نمی‌شوند. لطفاً اگر می‌خواهید پروتکل‌ها را بدون بررسی سازگاری تنظیم کنید، از متد ‘set_supported_encryption_unsafe(value)’ استفاده کنید.

مثال کد زیر نشان می‌دهد چگونه TLS 1.3 را برای ImapClient نمونهٔ کلاس.

import aspose.email as ae

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

client.supported_encryption = ae.clients.base.EncryptionProtocols.TLS13

در صورتی که یک پروتکل رمزگذاری مشخص در نسخه فعلی .NET Framework پشتیبانی نشود، تفاوت رفتار بین متد set_supported_encryption_unsafe(value) و ویژگی supported_encryption به شرح زیر است:

  • اگر ویژگی supported_encryption استفاده شود، کلاینت ایمیل پروتکل رمزگذاری را به سطح پشتیبانی‌شده کاهش می‌دهد.
  • اگر از متد set_supported_encryption_unsafe(value) استفاده شود، کلاینت ایمیل استثنا می‌اندازد.

اعتبارسنجی اعتبارهای سرور IMAP

برای برقراری یک اتصال امن به سرور IMAP قبل از انجام اقدامات بعدی، اعتبارهای کاربری بررسی و اعتبارسنجی می‌شوند. متد validate_credentials کلاس ImapClient کلاس به بررسی صحت نام کاربری و رمز عبور ارائه شده کمک می‌کند. اگر اعتبارها معتبر باشند، کلاینت می‌تواند به‌صورت موفقیت‌آمیز با سرور IMAP احراز هویت کند. نمونه کد زیر نشان می‌دهد چگونه این متد را در پروژه خود پیاده‌سازی کنید:

import aspose.email as ae

with ae.clients.imap.ImapClient("your imap server", 993, "your username", "your password", ae.clients.SecurityOptions.AUTO) as client:
    client.timeout = 4000

    if client.validate_credentials():
        # Further actions

فعال‌سازی ثبت فعالیت IMAP

ثبت فعالیت شامل ضبط اتصالات سرور، جزئیات انتقال پیام‌های ارسال و دریافت شده، پیام‌های خطا هنگام پردازش ایمیل، و هر عمل دیگری که توسط کلاینت یا سرور انجام می‌شود. برای ردیابی فعالیت کلاینت IMAP و تعاملات با سرور، از نمونه کد زیر استفاده کنید که از ویژگی log_file_name کلاس استفاده می‌کند ImapClient کلاسی برای ثبت اطلاعات در فایل لاگ مشخص‌شده:

import aspose.email as ae

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

# Set the path to the log file using the LogFileName property.
client.log_file_name = "C:\\Aspose.Email.IMAP.log"
# Set the UseDateInLogFileName property if it is necessary.
client.use_date_in_log_file_name = False