اختبار البريد الإلكتروني باستخدام وحدة smtpd في بايثون

بصفتي مطورًا متمرسًا في بايثون، أخطط لبدء سلسلة جديدة من المدونات حيث سأغطي وحدات سطر أوامر بايثون المختلفة التي تأتي مثبتة مسبقًا مع بايثون. في هذه التدوينة، سننظر في وحدة smtpd، والتي تتيح لك تشغيل خادم SMTP المحلي الخاص بك لاختبار البريد الإلكتروني.

تتيح وحدة smtpd، وهي اختصار لـ Simple Mail Transfer Protocol Daemon، للمطورين إعداد وتشغيل خادم SMTP المحلي الخاص بهم. تعد هذه الوظيفة مفيدة بشكل خاص لاختبار الميزات المتعلقة بالبريد الإلكتروني أثناء التطوير. وبدلاً من الاعتماد على خوادم البريد الإلكتروني الخارجية، يمكن للمطورين الاستفادة من smtpd لمحاكاة معاملات البريد الإلكتروني في بيئة محلية.

إنها جزء من مكتبة بايثون القياسية، مما يجعلها متاحة للاستخدام في أي مشروع بايثون دون الحاجة إلى تثبيت تبعيات إضافية. توفر هذه الوحدة تنفيذًا بسيطًا وخفيف الوزن لخادم SMTP (بروتوكول نقل البريد البسيط). SMTP هو البروتوكول المستخدم لنقل البريد الإلكتروني عبر الإنترنت، وتتيح وحدة smtpd للمطورين إنشاء خوادم SMTP مخصصة خاصة بهم.

إعداد خادم smtp

لتشغيل خادم smtp محليًا، تحتاج إلى تنفيذ الخطوات التالية،

  • افتح الطرفية وقم بتشغيل الأمر التالي:
python -m smtpd -n -c DebuggingServer localhost:1025
  • -n: يمنع الخادم من محاولة التحقق من وجود عنوان البريد الإلكتروني للمرسل. (نظرًا لأننا نقوم بالاختبار باستخدام عناوين بريد إلكتروني عشوائية).
  • -c DebuggingServer: يحدد الفئة التي سيتم استخدامها لخادم SMTP، في هذه الحالة، DebuggingServer لأننا نقوم باختبار وظيفة البريد الإلكتروني.
  • localhost:1025 : يحدد العنوان والمنفذ الذي سيستمع إليه الخادم. يمكنك اختيار منفذ مختلف إذا لزم الأمر.

الآن يقوم هذا الأمر بتشغيل خادم smtp الخاص بنا محليًا والذي يمكننا استخدامه لاختبار رسائل البريد الإلكتروني.

كتابة نص برمجي بسيط بالبايثون

بمجرد تشغيل smtpd، يمكننا كتابة نص برمجي بسيط لاختباره.

import smtplib
from email.mime.text import MIMEText

# Set up the email content
subject = "Test Email"
body = "This is a test email\n Hello World"
sender_email = "testing_email@xyz.com"
receiver_email = "recipient_test@abc.com"

message = MIMEText(body)
message["Subject"] = subject
message["From"] = sender_email
message["To"] = receiver_email

# Connect to the local SMTP server
server = smtplib.SMTP("localhost", 1025)

# Send the email
server.sendmail(sender_email, [receiver_email], message.as_string())

# Disconnect from the server
server.quit()

بعد إنشاء هذا البرنامج النصي، يمكنك تشغيله ببساطة. بمجرد تشغيله، يجب أن ترى الناتج التالي على الطرفية حيث يتم تشغيل أمر smtpd الخاص بك.

---------- MESSAGE FOLLOWS ----------
b'Content-Type: text/plain; charset="us-ascii"'
b'MIME-Version: 1.0'
b'Content-Transfer-Encoding: 7bit'
b'Subject: Test Email'
b'From: testing_email@xyz.com'
b'To: recipient_test@abc.com'
b'X-Peer: ::1'
b''
b'This is a test email'
b' Hello World'
------------ END MESSAGE ------------

بايثون هي لغة رائعة، وتأتي مع العديد من وحدات سطر الأوامر القوية المثبتة مسبقًا. آمل أن تكون قد حصلت على فرصة لتعلم شيء جديد! في منشورات المدونة المستقبلية، سأغطي المزيد من وحدات سطر الأوامر المثبتة مسبقًا. إذا كان لديك أي تعليقات، فلا تتردد في ترك تعليق أدناه. إذا كنت تفضل عدم التعليق علنًا، فيمكنك دائمًا إرسال بريد إلكتروني إلي.


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading