email sending with Python

كيفية كتابة كود Python يقوم بإرسال بريد إلكتروني تلقائي؟

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

email sending with Python

محتويات المقال

  1. مقدمة حول إرسال البريد الإلكتروني باستخدام Python
  2. المكتبات والأدوات الأساسية لإرسال البريد الإلكتروني
  3. إعداد SMTP Server لإرسال البريد الإلكتروني
  4. كتابة كود Python لإرسال بريد إلكتروني بسيط
  5. إرفاق ملفات مع البريد الإلكتروني
  6. النصائح الأمنية لإرسال البريد الإلكتروني
  7. الأسئلة الشائعة

1. مقدمة حول إرسال البريد الإلكتروني باستخدام Python

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

معلومة مفيدة: إذا كنت تريد استخدام Python لإرسال بريد إلكتروني بشكل متكرر أو لإرسال رسائل تسويقية، فإن إعداد بريد SMTP موثوق آمن سيجعل العملية أكثر سلاسة وأمانًا.


2. المكتبات والأدوات الأساسية لإرسال البريد الإلكتروني

لإرسال البريد الإلكتروني في Python، نحتاج إلى مكتبتين أساسيتين:

لمكتبات والأدوات الأساسية لإرسال البريد الإلكتروني
  • smtplib: مكتبة مدمجة في Python تتيح الاتصال بخوادم SMTP لإرسال الرسائل.
  • email: مكتبة لإنشاء المحتوى النصي للبريد الإلكتروني، مثل النصوص الأساسية، والملفات المرفقة، ونوع الرسالة (نصية أو HTML).
رابط توثيق مكتبة smtplib:
رابط توثيق مكتبة email:

3. إعداد SMTP Server لإرسال البريد الإلكتروني

لإرسال البريد الإلكتروني باستخدام Python، يجب أن تكون لديك صلاحية الوصول إلى خادم SMTP. يمكنك استخدام خوادم مجانية مثل Gmail وYahoo أو إعداد خادم SMTP خاص بك.

إعداد SMTP Server باستخدام Gmail

  1. تفعيل إعداد التطبيقات الأقل أمانًا: توجه إلى إعدادات أمان حسابك على Google واسمح للتطبيقات الأقل أمانًا بإرسال البريد.
  2. الحصول على كلمة مرور التطبيق: يفضل استخدام “كلمة مرور التطبيق” بدلاً من كلمة المرور العادية لحسابك إذا كنت تستخدم ميزة التحقق بخطوتين.

ملحوظة: للحصول على تفاصيل حول إعداد التطبيقات الأقل أمانًا، يمكنك زيارة دليل Google.

إعداد SMTP Server باستخدام إعدادات Gmail في الكود

  • الخادم: smtp.gmail.com
  • المنفذ (Port): 587

4. كتابة كود Python لإرسال بريد إلكتروني بسيط

بعد إعداد SMTP Server، يمكننا كتابة كود بسيط لإرسال بريد إلكتروني باستخدام مكتبة smtplib. في هذا المثال، سنقوم بإرسال بريد إلكتروني نصي بسيط.

مثال: إرسال بريد إلكتروني نصي بسيط

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# معلومات تسجيل الدخول
smtp_server = "smtp.gmail.com"
port = 587  # استخدام المنفذ 587 للاتصال الآمن
sender_email = "youremail@gmail.com"
password = "yourpassword"  # استبدلها بكلمة مرور التطبيق

# إعداد محتوى البريد
receiver_email = "receiver@example.com"
subject = "اختبار إرسال بريد إلكتروني"
body = "هذا هو محتوى البريد الإلكتروني المرسل تلقائيًا من خلال Python."

# إنشاء رسالة البريد الإلكتروني
msg = MIMEMultipart()
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = subject
msg.attach(MIMEText(body, "plain"))

# إرسال البريد الإلكتروني
try:
    # الاتصال بخادم SMTP
    with smtplib.SMTP(smtp_server, port) as server:
        server.starttls()  # تأمين الاتصال باستخدام TLS
        server.login(sender_email, password)
        server.sendmail(sender_email, receiver_email, msg.as_string())
    print("تم إرسال البريد الإلكتروني بنجاح!")
except Exception as e:
    print(f"حدث خطأ: {e}")
Python

تفسير الكود:

  1. إعداد الاتصال: نقوم بتحديد الخادم والمنفذ. ثم نستخدم starttls() لتأمين الاتصال باستخدام TLS.
  2. إنشاء الرسالة: نقوم بتكوين الرسالة باستخدام MIMEMultipart وتحديد المرسل، المستقبل، والموضوع.
  3. إرسال الرسالة: بعد تسجيل الدخول إلى SMTP Server باستخدام server.login()، نقوم بإرسال البريد باستخدام sendmail().

ملحوظة: يُفضل عدم استخدام كلمة المرور الخاصة بالبريد مباشرة في الكود، يمكن تخزينها في ملف إعدادات مشفر أو استخدام كلمة مرور التطبيق من Google.


5. إرفاق ملفات مع البريد الإلكتروني

قد نرغب في إرسال ملفات مرفقة مع البريد الإلكتروني، مثل مستندات PDF أو صور. يمكننا تحقيق ذلك باستخدام MIMEBase من مكتبة email لإرفاق ملفات مع الرسالة.

مثال: إرفاق ملف PDF بالبريد الإلكتروني

from email.mime.base import MIMEBase
from email import encoders

# إضافة ملف مرفق
filename = "document.pdf"
attachment = open(filename, "rb")

# إعداد المرفق وإضافته للرسالة
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header("Content-Disposition", f"attachment; filename= {filename}")

# إرفاق الملف مع الرسالة
msg.attach(part)
Python

تفسير الكود:

  • إعداد المرفق: نفتح الملف ونحدد نوع المرفق (PDF في هذه الحالة).
  • ترميز المرفق: نستخدم encode_base64 لضمان إرسال المرفق بطريقة آمنة.
  • إضافة المرفق للرسالة: نقوم بربط المرفق بالرسالة باستخدام msg.attach().

6. النصائح الأمنية لإرسال البريد الإلكتروني

إرسال البريد الإلكتروني يتطلب توفير بيانات حساسة مثل اسم المستخدم وكلمة المرور، لذلك من الضروري اتباع بعض الممارسات الأمنية للحفاظ على سرية وأمان هذه المعلومات.

1. استخدام كلمات مرور التطبيقات

إذا كنت تستخدم Gmail أو أي خدمة بريد أخرى تدعم التحقق بخطوتين، يُفضل إنشاء “كلمة مرور للتطبيقات” واستخدامها بدلًا من كلمة المرور الرئيسية. هذه الخطوة تضيف طبقة أمان إضافية.

كيفية إعداد كلمات مرور التطبيقات في Gmail:

  • توجه إلى إعدادات حساب Google الخاص بك.
  • فعّل التحقق بخطوتين.
  • اختر “كلمات مرور التطبيقات” وأنشئ كلمة مرور جديدة، واستخدمها في الكود.

2. تخزين كلمات المرور بشكل آمن

بدلاً من تخزين كلمات المرور مباشرة في الكود، يمكنك:

  • استخدام مكتبة dotenv: تسمح بتحميل متغيرات البيئة من ملف .env دون الكشف عن كلمة المرور في الكود.

مثال: استخدام dotenv لحماية كلمات المرور

  • قم بتثبيت مكتبة dotenv:
pip install python-dotenv
Bash
  • قم بإنشاء ملف .env واحفظ فيه بيانات البريد الإلكتروني:
EMAIL_USER=youremail@gmail.com
EMAIL_PASS=yourpassword
Bash
  • عدّل كود Python لاستخدام بيانات البيئة:
import os
from dotenv import load_dotenv
load_dotenv()

sender_email = os.getenv("EMAIL_USER")
password = os.getenv("EMAIL_PASS")
Python

ملاحظة: عدم مشاركة ملف .env أو رفعه إلى الإنترنت، فهذا الملف يحتوي على بيانات سرية.


الأسئلة الشائعة

  1. هل يمكنني إرسال بريد إلكتروني لأكثر من مستلم في نفس الوقت؟
    • نعم، يمكنك إضافة عدة عناوين في receiver_email باستخدام فاصلة , بين العناوين، أو استخدام قائمة عناوين عند إعداد sendmail().
  2. كيف يمكنني إعداد رسائل بريد إلكتروني مجدولة في Python؟
    • يمكن استخدام مكتبة schedule أو APScheduler لتحديد مواعيد محددة لإرسال البريد. مزيد من المعلومات تجدها في Python APScheduler documentation.
  3. ما هي أفضل الممارسات للحفاظ على أمان بيانات الاتصال في كود Python؟
    • استخدام dotenv لتخزين البيانات الحساسة، تفعيل التحقق بخطوتين في حسابك، والاعتماد على كلمات مرور التطبيقات.

خلاصة المقال

أصبح من السهل إعداد كود Python لإرسال البريد الإلكتروني تلقائيًا بفضل مكتبات smtplib وemail. مع توفير ميزات مثل إرسال الرسائل النصية والمرفقات، ودعم HTML، وتوافر إعدادات أمان متعددة، يمكن للمبرمجين تخصيص وتحسين عملية إرسال البريد الإلكتروني بسهولة. باتباع أفضل الممارسات والاهتمام بتأمين المعلومات الحساسة، يمكن الاعتماد على Python كأداة قوية للإرسال التلقائي للبريد.

اترك ردّاً

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