إرسال الرسائل الإلكترونية مع بايثون

سنتعلم اليوم كيفية إرسال رسالة إلكترونية بإستخدام بايثون و من دون إستنجاد بأي مكتبات خارجية بل سنقوم بإستخدام وحدة مدمجة وهي smtplib الموجودة في المكتبة القياسية لبايثون .

في معظم التطبيقات نحتاج إلى التواصل مع المستخدمين بإستخدام طرق إلكترونية، ويتم إستخدام البريد الإلكتروني من أجل العديد من المهام ومن بينها : إسترجاع كلمات المرور، تفعيل الخدمات أو تأكيد الطلبيات،والتحقق من حسابات المستخدمين، ومهما كان السبب فإن عملية التراسل الإلكتروني دائما ما تكون هي نفسها ولا يهم اللغة المستخدمة لذلك.

في هذا الذرس سنتعلم كيفية إرسالة رسالة إلكترونية بإستخدام لغة بايثون .

فهم أساسيات البريد الإلكتروني

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

نحن بحاجة إلى هذا السيرفر بغض النظر عن برنامج الزبون الذي نستعمله مثل : Outlook أو Thunderbird أوحتى برنامج بايثون، فعندما نقوم بفتح حساب لبريد إلكتروني مع أي مزود للخدمة فإن هذا الأخير يقوم بتزويدك بشهاداته الخاصة ب SMTP حتى يمكنك إرسال رسائل إلكترونية بإستخدام سيرفر الشركة.

هناك العديد من سيرفرات SMTP المفتوحة والمجانية ولكن عادة مايتم إستخدامها من قبل المزعجين وقد تم حجبها من قبل معظم شركات البريد الإلكتروني ، لذلك و من الأفضل إستخدام سيرفر محمي بكلمة سر لأن عملية إرسال الرسائل ستكون مضمونة الوصول إلى هدفها وتجنب الوقوع في شراك مجلد السبام أو الرسائل المزعجة .

لا يكون سيرفر  SMTP دائما سيرفر خارجي ففي بعض الأحيان يكون على نفس الجهاز وبالتالي نرسل الرسالة من و إلى نفس الجهاز بإستخدام كود بايثون ونستخدم السيرفر المحلي Localhost كسيرفر SMTP ولكي تجد الإعدادات الصحيحة لهكذا برنامج بايثون قم بزيارة وثائق الخاصة بمزود خدمة email الخاص بك لأنني في هذا الموضوع سنقوم بإستخدام gmail.

عندما تريد إرسال رسالة إلى شخص ما نحتاج أولا إلى جمع إعدادت البريد الإلكتروني، ويمكننا ترك الفرصة للمستخدم بإدخال تلك المعلومات أو نقوم نحن بدمجها في الكود البرمجي .

البريد الإلكتروني النموذجي يحتاج إلى الإعدادات التالية :

  • عنوان بريد الإلكتروني للشخص المستقبل .
  • عنوان بريد الإلكتروني للشخص المرسل.
  • موضوع الرسالة .
  • صدر الرسالة .
  • المرفقات (إن وجدت، غير مطلوبة).
  • عنوان سيرفر SMTP
  • منفذ SMTP (عادة 25 ولكن يمكن أن تكون 2525 أو 587 كبديلين )

ملاحظة حول عنوان المرسل :

يمكنك إستعمال أي عنوان بريدي تشاء لكن هناك بعض الخوادم الواردة (مثل Gmail) قادرة على كشف العناوين المزيفة ويمكنها قادرة على رمي رسالة في مجلد البريد المزعج لأسباب الحماية .

لذلك من المهم إستعمال عنوان حقيقي ومشهور ولتفادي عدم الرد على السائل يمكنك إضافة خاصية عدم الرد بدلا من إستخدام العناوين المزيفة ففي بعض الحالات يمكن لسيرفر SMTP أن يرفض رسالتك وبالتالي عدم وصولها إلى المستقبل .

إرسال الرسائل البريدية بواسطة بايثون بإستخدام  وحدة smtpLib

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

قم بكتابة السطر التالي في بداية الكود


import smtplib

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


sender = "sss@yourdomain.com"
recipient = "rrr@gmail.com"
subject = "Test email from Python"
text = "Hello from Python"

سهل بما فيه الكفاية،ولكن الأن نحن بحاجة لإرسال الرسالة بإستخدام سيرفر SMTP، وفي هذا المثال سنقوم بإستخدام Gmail بما أنه مجاني و متوفر لأي شخص يملك حساب قوقل .

تفعيل الوصول إلى SMTP في Gmail 

لنسمح لتطبيق بايثون إلى الدخول إلى سيرفر قوقل بإستخدام حسابك لإرسال الرسائل، علينا أن نقوم بذلك على حسابنا على قوقل ، قم بإتباع الرابط التالي (بعد تسجيل الدخول) ثم قم بتفعيل الخاصية  .

عنوان سيرفر SMTP الخاص بقوقل هو “smtp.gmail.com” ورقم المنفذ هو 587 وإسم المستخدم هو عنوانك البريدي وكلمة المرور هي الخاص بحسابك على قوقل.

سنقوم بإضافة متغير كلمة المرور بما أننا قمنا بتعيين إسم المستخدم سابقا

import smtplib

sender = "sss@yourdomain.com"
recipient = "rrr@gmail.com"
password = "thepassword" # Your SMTP password for Gmail
subject = "Test email from Python"
text = "Hello from Python"

لاحظ أن متغير النص يحتوي على سطر واحد وإذا كنت تريد عدة سطور يمكنك إضافة العلامة \\n لإضافة سطور متعددة


text = "Hello from Python\nThis is line 2\nAnd line 3"

حتى الأن قمنا بكتاية الإعدادات الأساسية للبريد الإلكتروني وحان الأن وقت إستعمال وحدة smtplib لإرسال الرسالة الإلكترونية، يمكننا الإتصال بسيرفر SMTP عبر نص عادي أو عبر نص مشفر بإستخدام SSL.

وبماأن الخصوصية على الأنترنيت شيء مهم سنقوم بإستخدام كائن SMTP_SSL  حتى نتأكد من أن الإتصال بين تطبيق بايثون وسيرفر SMTP  أمن .


import smtplib

sender = "sss@yourdomain.com"
recipient = "rrr@gmail.com"
password = "xxxxxx" # Your SMTP password for Gmail
subject = "Test email from Python"
text = "Hello from Python"

smtp_server = smtplib.SMTP_SSL("smtp.gmail.com", 465)
smtp_server.login(sender, password)
message = "Subject: {}\n\n{}".format(subject, text)
smtp_server.sendmail(sender, recipient, message)
smtp_server.close()

دعونا الأن نقوم بتحليل الكود

تقوم طريقة  SMTP_SSL بتهيئة السيرفر لإستخدام طبقة SSL ثم تقوم طريقة login() بالتحقق من إسم المستخدم وكلمة المرور وإذا كانت غير صحيحة سنتلقى رسالة خطأ .

<div class="codehilite">
<pre>smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8  https://support.google.com/mail/?p=BadCredentials o22 sm62348871wrb.40 - gsmtp')
</pre>
</div>

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

ثم يأتي دور طريقة sendmail() والتي تخبر سيرفر SMTP بتسليم الرسالة الحالية، وكما لاحظتم فإن هذه الطريقة لا تقبل القيم المنفصلة ( subject و body) وبدلا من ذلك قمنا بإنشاء متغير جديد تحت إسم message ونسقنا كل من متغير subject و body مررناهما إلى sendmail() .

وهكذا نكون قد قمنا بتمرير الرسالة إلى السيرفر ليقوم هو بتحويلها إلى المستقبل .

 

 

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

One Thought on “إرسال الرسائل الإلكترونية مع بايثون

  1. 👀😏 ‏أخي عبد القادر، ما اروع شروحاتك حول اللغة البرمجية الحبيبة بايثون. لقد أذهلتنا من غرابة هذه اللغة… وبغض النظر عن أي موضوع: ‏إلا أن جميع مواضيعك ‏حول البرمجة باستخدام ال بايثون ‏ياتينا بدرر ثمينة، ‏وتزيد في نفوسنا الإصرار والعزيمة على مواصلتنا في استخدام هذه اللغة للبرمجة.
    ‏وقبل أن اختم التعليق:
    ‏أطلب منكى طلب لو سمحت’ ‏أخي الغالي ..
    ‏اريد منكى إرسال افضل الكتب لتعلم هذه اللغة إلى بريد الإلكتروني التالي:
    qadary.yemen@gmail.com
    ‏مع مراعاة أن لا تكون بصيغة: PDF
    ‏والسلام ختام الكلام. 😌

اترك تعليقاً

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

Post Navigation