متصل شدن به سرور SMTP

اتصال به سرور SMTP با SSL

برای برقراری اتصال امن با سرور SMTP که از SSL پشتیبانی می‌کند، باید ویژگی‌های کلیدی زیر را پیکربندی کنید SmtpClient کلاس:

  • هاست: آدرس سرور SMTP (مثلاً smtp.gmail.com)

  • پورت: پورت مورد استفاده برای ارتباط با SSL (معمولاً ۴۶۵ برای SSL ضمنی یا ۵۸۷ برای SSL/TLS صریح)

  • نام کاربری: نام حساب استفاده شده برای احراز هویت

  • رمز عبور: رمز عبور حساب SMTP

  • گزینه‌های امنیتی: نوع رمزگذاری مورد استفاده (SSLEXPLICIT، SSLIMPLICIT و غیره)

نمونه کد زیر نحوه پیکربندی و اتصال به یک سرور SMTP با SSL را نشان می‌دهد:

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

هنگام برقراری اتصال با سرور SMTP، سرور معمولاً پس از اتصال موفق، یک رشته خوش‌آمدگویی ارسال می‌کند. این پاسخ تأیید می‌کند که سرور آماده ادامه ارتباط است.

در برخی سناریوها، کلاینت‌های ایمیل در حالت اتصال خودکار عمل می‌کنند و ترکیب‌های متعددی از پروتکل‌های امنیتی و پورت‌ها (مانند SSL ضمنی یا STARTTLS) را برای برقراری اتصال موفق امتحان می‌نمایند. اگر تنظیمات کلاینت با حالت امنیتی مورد انتظار سرور مطابقت نداشته باشد، سرور رشته خوش‌آمدگویی را ارسال نمی‌کند. این ناسازگاری باعث می‌شود کلاینت تا زمان انقضای زمان‌انتظار کلی صبر کند قبل از اینکه ترکیب بعدی را امتحان کند — که منجر به کندی در مدیریت اتصال می‌شود.

برای بهبود این رفتار، Aspose.Email ارائه می‌دهد greeting_timeout ویژگی در SmtpClient کلاس. این ویژگی زمان‌انتظار خاصی (به میلی‌ثانیه) برای انتظار رشته خوش‌آمدگویی سرور تنظیم می‌کند. اگر خوش‌آمدگویی در زمان تعیین‌شده دریافت نشود، کلاینت بلافاصله پیکربندی بعدی را امتحان می‌کند — که فرآیندهای اتصال خودکار را به‌طور چشمگیری سرعت می‌بخشد.

نمونه کد زیر نشان می‌دهد چگونه این ویژگی را در یک پروژه پیاده‌سازی کنید:

import aspose.email as ae

client = ae.clients.smtp.SmtpClient("localhost", 25, "username", "password")
client.greeting_timeout = 4000

ارسال ایمیل‌ها از طریق SMTP با استفاده از پروکسی SOCKS

Aspose.Email از نسخه‌های ۴، ۴a و ۵ پروتکل پروکسی SOCKS پشتیبانی می‌کند. نمونه کد زیر نشان می‌دهد چگونه با استفاده از پروکسی SOCKS ایمیلی را از طریق SMTP ارسال کنید:

import aspose.email as ae

client = ae.clients.smtp.SmtpClient("smtp.domain.com", "username", "password")

client.security_options = ae.clients.SecurityOptions.SSL_IMPLICIT
# proxy address
proxy_address = "192.168.203.142"
#proxy port
proxy_port = 1080
socks_proxy = ae.clients.SocksProxy(proxy_address, proxy_port, ae.clients.SocksVersion.SOCKS_V5)
client.proxy = socks_proxy
client.send(ae.MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy", "Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"))

ارسال ایمیل‌ها از طریق SMTP با استفاده از پروکسی HTTP

نمونه کد زیر استفاده از پروکسی HTTP برای ارسال ایمیل از طریق سرور SMTP را نشان می‌دهد:

import aspose.email as ae

http_proxy = ae.clients.HttpProxy("18.222.124.59", 8080)
client = ae.clients.smtp.SmtpClient("host", 587, "username", "password")
client.proxy = http_proxy
client.send(ae.MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy", "Body"))

انتخاب روش‌های احراز هویت SMTP پشتیبانی‌شده در Python

برای اطمینان از یک اتصال امن و سازگار با سرور SMTP، استفاده از روش احراز هویتی که هم توسط کلاینت و هم توسط سرور پشتیبانی می‌شود اهمیت دارد. Aspose.Email برای Python از طریق .NET امکان‌پذیری داخلی ارائه می‌دهد ویژگی‌ها برای مدیریت این مورد:

  • supported_authentication — دریافت فهرستی از روش‌های احراز هویت پشتیبانی‌شده توسط سرور SMTP.

  • allowed_authentication — دریافت یا تنظیم روش‌های احراز هویت که کلاینت اجازه استفاده از آن‌ها را دارد.

با استفاده از این ویژگی‌ها، توسعه‌دهندگان می‌توانند قابلیت‌های کلاینت را با الزامات سرور همسو کنند و از بروز خطاهای احراز هویت در طول فرایند اتصال جلوگیری نمایند.

قطعه کد زیر نشان می‌دهد چگونه روش احراز هویت SMTP مجاز را با استفاده از allowed_authentication ویژگی:

client.allowed_authentication = ae.clients.smtp.SmtpKnownAuthenticationType.LOGIN

تنظیم زمان‌انتظار سرور SMTP

هنگامی که ایمیل‌ها را از طریق شبکه ارسال می‌کنید، تعیین زمان‌انتظاری مناسب برای جلوگیری از قفل شدن برنامه در صورتی که سرور پاسخ ندهد، ضروری است. timeout ویژگی SmtpClient کلاس در Aspose.Email برای Python از طریق .NET به شما اجازه می‌دهد حداکثر زمان انتظار (به میلی‌ثانیه) برای پاسخ‌های سرور را تعریف کنید.

این ویژگی برای عملیات‌هایی مانند برقراری اتصال یا ارسال دستورات SMTP اعمال می‌شود. اگر سرور در مدت زمان مشخص پاسخ ندهد، کلاینت یک استثناء زمان‌انتظار را پرتاب می‌کند که به شما کمک می‌کند سرورهای بدون پاسخ را به‌طور مؤثرتری مدیریت کنید.

از قطعه کد زیر برای تنظیم زمان‌انتظار برای پاسخ سرور استفاده کنید:

import aspose.email as ae

client = ae.clients.smtp.SmtpClient("host", 587, "username", "password", ae.clients.SecurityOptions.SSL_EXPLICIT)
# 60 seconds
client.timeout = 60000

فعال‌سازی رمزگذاری TLS برای اتصال‌های امن SMTP

Aspose.Email ارتباط امن با سرورهای SMTP را با استفاده از پروتکل‌های کریپتوگرافی SSL و TLS پشتیبانی می‌کند. این پروتکل‌ها به حفاظت از داده‌های مبادله‌شده بین برنامه شما و سرور ایمیل کمک می‌کنند و محرمانگی و یکپارچگی را در هنگام انتقال تضمین می‌نمایند.

NOTE: Only versions of SSL/TLS supported by your current Python framework can be applied. Unsupported protocol versions will be silently ignored without raising exceptions. If you need to bypass compatibility checks and explicitly set the encryption protocols, use the `set_supported_encryption_unsafe(value)` method of the [SmtpClient](https://reference.aspose.com/email/python-net/aspose.email.clients.smtp/smtpclient/#smtpclient-class) class.

مثال کد زیر نشان می‌دهد چگونه TLS 1.3 را برای ارتباط SMTP تنظیم کنید:

import aspose.email as ae

client = ae.clients.smtp.SmtpClient("host", 587, "username", "password", ae.clients.SecurityOptions.SSL_EXPLICIT)
client.supported_encryption = ae.clients.base.EncryptionProtocols.TLS13

استفاده از مکانیزم CRAM-MD5 برای احراز هویت

Aspose.Email برای Python از طریق .NET از مکانیزم احراز هویت CRAM-MD5 پشتیبانی می‌کند که با جلوگیری از ارسال رمزهای عبور به صورت متن ساده در هنگام احراز هویت SMTP، امنیت را ارتقا می‌دهد. این روش به‌ویژه هنگام اتصال به سرورهایی که احراز هویت چالش-پاسخ را می‌طلبند مفید است.

برای فعال‌سازی احراز هویت CRAM-MD5، مقدار allowed_authentication ویژگی SmtpClient کلاس به CRAM_MD5، همان‌طور که در نمونه کد زیر نشان داده شده است:

client.allowed_authentication = ae.clients.smtp.SmtpKnownAuthenticationType.CRAM_MD5