إرسال رسائل البريد الإلكتروني وإعادة توجيه الرسائل عبر SMTP

الـ SmtpClient الفئة في Aspose.Email for Python عبر .NET توفر واجهة قوية ومرنة لإرسال الرسائل باستخدام بروتوكول نقل البريد البسيط (SMTP). إنها النقطة الأساسية للمطورين الذين يرغبون في توصيل رسائل البريد الإلكتروني داخل تطبيقاتهم.

الميزات الرئيسية لـ SmtpClient تضمين الفئة:

  • تسليم البريد الإلكتروني عبر SMTP: يتيح إرسال الرسائل مباشرة عبر خادم SMTP.

  • خيارات التسليم البديلة: يدعم طرق تسليم إضافية مثل حفظ الرسائل في نظام الملفات أو كتابة إلى طابور الرسائل.

  • العمليات المتزامنة وغير المتزامنة:

    • وضع تزامني: استخدم طرق Send لحجز الخيط الحالي حتى يتم نقل البريد الإلكتروني بالكامل.

    • الوضع غير المتزامن: استخدم طرق SendAsync لإرسال الرسائل في الخلفية، مما يسمح للتطبيق بالبقاء مستجيبًا.

  • دعم TNEF: يسمح بإرسال رسائل بصيغة Transport Neutral Encapsulation Format (TNEF) للتوافق مع ميزات Microsoft Outlook.

تغطي هذه المقالة جميع الوظائف الرئيسية المتاحة عبر SmtpClient فئة، توضح كيفية إرسال رسائل بريد إلكتروني قياسية ومتقدمة مع تحكم كامل في الإعدادات والتسليم.

إرسال رسائل البريد إلكتروني بشكل متزامن

الـ SmtpClient.send الطريقة تسمح لك بإرسال رسالة بريد إلكتروني بشكل متزامن. هذا الأسلوب مفيد عندما يحتاج التطبيق إلى تأكيد التسليم قبل المتابعة.

لإرسال بريد إلكتروني نصي عادي بشكل متزامن باستخدام Aspose.Email للغة Python عبر .NET، استخدم الخطوات وعينة الكود أدناه:

  1. إنشاء MailMessage مثيل واضبط المرسل، المستلم(ين)، الموضوع، والمحتوى.
  2. تكوين الـ SmtpClient مع مضيف الخادم، المنفذ، اسم المستخدم، وكلمة المرور.
  3. استدعِ الـ send طريقة على الـ SmtpClient مثيل ومرر فيه الـ MailMessage الكائن.
# Create email
eml = ae.MailMessage()
eml.subject = "Message with Plain Text Body"
eml.body = "This is text body."
eml.from_address = "from@gmail.com"
eml.to.append(ae.MailAddress("to@gmail.com", "Recipient 1")) 

# Configure SmtpClient object
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO 

# Send email
client.send(eml)

إرسال ملف EML مُعد مسبقًا عبر SMTP

إذا كنت بحاجة إلى إرسال رسالة بريد إلكتروني تم إنشاؤها وحفظها بالفعل بتنسيق EML، يمكنك تحميلها وإرسالها برمجيًا باستخدام Aspose.Email for Python عبر .NET.

المقتطف البرمجي التالي مع الخطوات يوضح كيفية إرسال ملف EML باستخدام SmtpClient:

  1. حمّل ملف EML باستخدام MailMessage.load طريقة.
  2. إنشاء وتكوين مثال من SmtpClient، مع توفير مضيف خادم SMTP واسم المستخدم وكلمة المرور للمصادقة.
  3. استدعِ الـ send طريقة على الـ SmtpClient مثيل ومرّر الرسالة المحملة.
import aspose.email as ae

message = ae.MailMessage.load("test.eml")

# Send this message using SmtpClient
client = ae.clients.SmtpClient("host", "username", "password")
client.send(message)

إرسال بريد نص عادي

يمكنك إرسال بريد نص عادي باستخدام Aspose.Email عن طريق تحديد جسم الرسالة كنص بسيط. الـ MailMessage.body الخاصية تُستخدم لتعريف المحتوى، بينما SmtpClient الفئة تتولى عملية الإرسال.

المقتطف البرمجي التالي مع الخطوات يوضح كيفية إرسال بريد نص عادي:

  1. إنشاء مثيل من الـ MailMessage فئة.
  2. حدد عناوين البريد الإلكتروني للمرسل والمتلقي.
  3. قم بتعيين محتوى النص العادي إلى الخاصية body.
  4. إنشاء مثيل من الـ SmtpClient فئة مع تفاصيل الخادم والبيانات اعتماد.
  5. إرسال البريد الإلكتروني باستخدام الـ send طريقة.

إرسال بريد HTML

Aspose.Email for Python عبر .NET يتيح لك إرسال رسائل بريد إلكتروني بأجسام مُنسقة بتنسيق HTML باستخدام MailMessage الفئة. من خلال تعيين محتوى HTML إلى html_body الخاصية وإعداد is_body_html إلى True، يمكنك إنشاء رسائل غنية ومصممة.

العينة البرمجية التالية مع الخطوات توضح كيفية إرسال بريد HTML:

  1. إنشاء مثيل من الـ MailMessage فئة.
  2. حدد عناوين البريد الإلكتروني للمرسل والمتلقي.
  3. تعيين is_body_html = True لإظهار تنسيق HTML.
  4. عيّن محتوى HTML الخاص بك إلى html_body خاصية.
  5. إنشاء وتكوين SmtpClient كائن.
  6. استخدم الـ send طريقة لنقل الرسالة.

ملاحظة: بينما يستخدم هذا المثال HTML أساسي، يمكنك إدراج هياكل HTML أكثر تعقيدًا لإنشاء تخطيطات بريد إلكتروني مستجيبة ومُعلمة.

إرسال بريد HTML مع بديل نص عادي

عند إرسال رسائل HTML، من الأفضل تضمين نسخة نصية للمستلمين الذين لا تدعم عملاء البريد HTML. Aspose.Email for Python عبر .NET يقدم الـ AlternateView الفئة لتضمين كل من محتوى HTML والنص العادي في رسالة واحدة، مما يعزز التوافق وتجربة المستخدم.

العينة البرمجية التالية والخطوات توضح كيفية إرسال بريد بمحتوى نص بديل:

  1. إنشاء مثيل من الـ MailMessage فئة.
  2. حدد عناوين البريد الإلكتروني للمرسل والمتلقي.
  3. عيّن محتوى HTML إلى html_body الخاصية وتعيين is_body_html = True.
  4. إنشاء AlternateView نص عادي باستخدام create_alternate_view_from_string.
  5. أضف العرض البديل إلى alternate_views مجموعة الـ MailMessage.
  6. إنشاء وتكوين SmtpClient كائن.
  7. إرسال البريد الإلكتروني باستخدام الـ send طريقة.

كيفية إرسال بريد جماعي

إرسال بريد جماعي يتضمن إرسال عدة رسائل في آن واحد — قد يكون كل منها موجهًا إلى مستلم مختلف. Aspose.Email يوفر هذه القدرة باستخدام الـ SmtpClient فئة.

العينة البرمجية أدناه توضح كيفية إرسال دفعة من الرسائل مرة واحدة:

  1. إنشاء مثيل من الـ SmtpClient فئة وتكوين المضيف، المنفذ، بيانات الاعتماد، وإعدادات الأمان.
  2. إنشاء عدة MailMessage نماذج — كل منها يمثل رسالة بريد إلكتروني منفصلة.
  3. حدد المرسل، المتلقي، الموضوع، وجسم الرسالة لكل بريد.
  4. أضف جميع MailMessage الكائنات إلى MailMessageCollection.
  5. استدعِ الـ send طريقة الـ SmtpClient فئة، مع تمرير الـ MailMessageCollection كوسيط.
import aspose.email as ae
from aspose.email.clients import SmtpClient, SecurityOptions
from aspose.email import MailMessage, MailMessageCollection

# Create individual email messages
message1 = MailMessage("from@gmail.com", "to1@gmail.com", "Bulk Email - Message 1", "Hello, this is message 1.")
message2 = MailMessage("from@gmail.com", "to2@gmail.com", "Bulk Email - Message 2", "Hello, this is message 2.")
message3 = MailMessage("from@gmail.com", "to3@gmail.com", "Bulk Email - Message 3", "Hello, this is message 3.")

# Add messages to a collection
many_messages = MailMessageCollection()
many_messages.append(message1)
many_messages.append(message2)
many_messages.append(message3)

# Configure SMTP client
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO

# Send all messages in bulk
client.send(many_messages)

إرسال رسائل بريد مع دعم متعدد الاتصالات

Aspose.Email for Python عبر .NET يتيح لك استخدام عدة اتصالات متزامنة عند إرسال رسائل البريد عبر الـ SmtpClient الفئة. هذه الميزة يمكن أن تساعد في تحسين الأداء عند إرسال كميات كبيرة من البريد عبر توزيع عبء العمل على عدة اتصالات. ومع ذلك، ضع في اعتبارك أن تفعيل وضع متعدد الاتصالات لا يضمن تحسين الأداء في جميع السيناريوهات — فهو يعتمد على تكوين الخادم وظروف الشبكة.

الخصائص الرئيسية:

  • use_multi_connection: يفعّل أو يعطّل وضع متعدد الاتصالات لعميل SMTP.

  • connections_quantity: يحدد عدد الاتصالات التي سيتم فتحها عندما يتم تفعيل وضع متعدد الاتصالات.

العينة البرمجية التالية تُظهر كيفية تفعيل وضع متعدد الاتصالات:

  1. إنشاء وتكوين مثال من SmtpClient.
  2. حدد تفاصيل الخادم مثل المضيف، المنفذ، اسم المستخدم، كلمة المرور، والتشفير.
  3. تفعيل وضع متعدد الاتصالات عبر ضبط use_multi_connection.
  4. حدد عدد الاتصالات باستخدام connections_quantity.
import aspose.email as ae

client = ae.clients.smtp.SmtpClient
client.host = "<HOST>"
client.username = "<USERNAME>"
client.password = "<PASSWORD>"
client.port = 587
client.supported_encryption = ae.clients.base.EncryptionProtocols.TLS
client.security_options = ae.clients.SecurityOptions.SSL_EXPLICIT

client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
client.send(messages)

إرسال رسائل بتنسيق TNEF

تنسيق النقل المتعادل (TNEF) هو تنسيق بريد إلكتروني مملوك يُستخدم من قبل Microsoft Outlook وExchange للحفاظ على التنسيقات الغنية، الكائنات المدمجة، والميزات الخاصة مثل أزرار التصويت. قد لا تحتفظ عملاء البريد القياسي بهذا التنسيق عند استخدام رسائل MIME العادية.

Aspose.Email for Python عبر .NET يدعم إرسال الرسائل بصيغة TNEF لضمان الحفاظ على جميع التنسيقات والميزات المتقدمة. يتم ذلك عبر تفعيل الـ use_tnef خاصية الـ SmtpClient فئة.

العينة البرمجية التالية والخطوات توضح كيفية إرسال بريد TNEF:

  1. حمّل رسالة EML موجودة أو أنشئ واحدة باستخدام الـ MailMessage فئة.
  2. حدد عناوين المرسل والمتلقي.
  3. تفعيل تنسيق TNEF عن طريق ضبط use_tnef = True على الـ SmtpClient كائن.
  4. إرسال الرسالة باستخدام الـ send() طريقة.

إرسال طلبات اجتماع عبر البريد الإلكتروني

Microsoft Outlook وعملاء البريد الإلكتروني المدعومين بالتقويم مثل IBM Lotus Notes يتيحون للمستخدمين إدارة المواعيد مباشرةً من صندوق الوارد. عند استلام دعوة اجتماع، يمكن للمستخدم قبولها أو رفضها داخل عميل البريد. باستخدام Aspose.Email for Python عبر .NET، يستطيع المطورون إنشاء وإرسال هذه الدعوات برمجيًا وفقًا لمعيار iCalendar (RFC 2445).

كيفية إرسال دعوات اجتماع عبر البريد الإلكتروني

Aspose.Email يقدم دعمًا مدمجًا لإنشاء وإرسال طلبات اجتماعات iCalendar كجزء من البريد الإلكتروني. هذه الطلبات متوافقة مع عملاء التقويم الشائعين وتسمح للمستلمين بالرد على الدعوات بسهولة.

|طلب اجتماع iCalendar يُرسل عبر البريد الإلكتروني| | :- | |todo:image_alt_text|

المقتطف البرمجي التالي يوضح لك كيفية إرسال الطلبات عبر البريد الإلكتروني:

  1. إنشاء MailMessage كائن.
  2. حدد عناوين البريد الإلكتروني للمرسل والمتلقي.
  3. إنشاء Appointment كائن يضم الموقع، أوقات البدء/الانتهاء، المرسل، والمتلقين.
  4. حدد ملخص الموعد والوصف.
  5. أرفق الموعد بالبريد باستخدام add_alternate_view().
  6. إرسال البريد الإلكتروني باستخدام الـ SmtpClient.

دعم iCalendar لـ IBM Lotus Notes

Aspose.Email يستخدم تنسيق iCalendar (RFC 2445)، ما يضمن توافق طلبات اجتماعك مع Microsoft Outlook، IBM Lotus Notes، وأي عميل آخر يدعم المعيار. يمكن استخدام نفس العملية بغض النظر عن منصة المتلقي.

إعادة توجيه الرسائل باستخدام عميل SMTP

إعادة توجيه الرسائل مهمة شائعة في التواصل الرقمي، تُستخدم غالبًا لمشاركة الرسائل المستلمة مع الآخرين. Aspose.Email for Python عبر .NET يتيح للمطورين إعادة توجيه الرسائل برمجيًا باستخدام الـ SmtpClient الفئة. طريقة forward تمكّن من إعادة توجيه الرسائل المحفوظة أو المستلمة إلى متلقين جدد دون إشراك المرسل الأصلي.

إليك عينة برمجية توضح كيفية إعادة توجيه بريد باستخدام الـ MailMessage فئة:

إعادة توجيه ملفات EML دون تحميلها في MailMessage

Aspose.Email يدعم أيضًا إعادة توجيه ملفات .eml مباشرةً دون الحاجة لتحميلها أولًا في الـ MailMessage كائن. هذا مفيد خصوصًا في السيناريوهات التي تحتاج إلى تقليل استهلاك ذاكرة النظام.

العينة البرمجية أدناه توضح كيفية إعادة توجيه ملف EML مباشرةً:

import aspose.email as ae

client = ae.clients.smtp.SmtpClient(host, smtp_port, username, password, ae.clients.SecurityOptions.AUTO)
file = open("test.eml", "rb")
client.forward(sender, recipients, file)