الاتصال بخادم SMTP

الاتصال بخادم SMTP باستخدام SSL

لإنشاء اتصال آمن مع خادم SMTP يدعم SSL، تحتاج إلى تكوين الخصائص الرئيسية التالية لـ SmtpClient فئة:

  • Host: عنوان خادم SMTP (مثال: smtp.gmail.com)

  • Port: المنفذ المستخدم للاتصالات الممكّنة بـ SSL (عادةً 465 للـ SSL الضمني أو 587 للـ SSL/TLS الصريح)

  • Username: اسم الحساب المستخدم للمصادقة

  • Password: كلمة المرور لحساب SMTP

  • Security Options: نوع التشفير الذي سيُستخدم (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 الدعم للإصدارات 4 و4a و5 من بروتوكول بروكسي SOCKS. يوضح مثال الشفرة التالي كيفية إرسال بريد إلكتروني باستخدام SMTP مع بروكسي SOCKS:

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 for Python عبر .NET آلية مدمجة الخصائص لإدارة ذلك:

  • supported_authentication — تسترجع قائمة بطرق المصادقة المدعومة من قبل خادم SMTP.

  • allowed_authentication — يحصل على أو يضبط طرق المصادقة التي يُسمح للعميل باستخدامها.

باستخدام هذه الخصائص، يمكن للمطورين توافق قدرات العميل مع متطلبات الخادم وتجنب فشل المصادقة أثناء عملية الاتصال.

يُظهر مقطع الشفرة التالي كيفية تحديد طريقة المصادقة المسموح بها في SMTP باستخدام الـ allowed_authentication خاصية:

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

تعيين مهلة خادم SMTP

عند إرسال رسائل البريد الإلكتروني عبر الشبكة، فإن ضبط مهلة مناسبة ضروري لمنع توقف التطبيق إذا فشل الخادم في الاستجابة. الـ timeout خاصية الـ SmtpClient الفئة في Aspose.Email for 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 for Python عبر .NET آلية المصادقة CRAM-MD5، التي تعزز الأمان عن طريق تجنب نقل كلمات المرور بنص صريح أثناء مصادقة SMTP. هذه الطريقة مفيدة خصوصاً عند الاتصال بالخوادم التي تتطلب مصادقة التحدي‑الاستجابة.

لتمكين مصادقة CRAM-MD5، اضبط الـ allowed_authentication خاصية الـ SmtpClient الفئة إلى CRAM_MD5، كما هو موضح في مثال الشفرة التالي:

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