1. المقدمة
إرسال البريد الإلكتروني باستخدام بايثون مهارة مفيدة للغاية لكل من التطبيقات الشخصية وأنظمة الأعمال. على سبيل المثال، يمكن استخدامها لإرسال إشعارات تلقائية للمستخدمين من تطبيق ما أو لتسليم سجلات الأخطاء النظامية إلى المسؤولين في الوقت الفعلي. أيضًا، من خلال إرسال البريد عبر الكود بدلاً من يدوياً، يمكنك التعامل مع تسليم البريد بفعالية وتبسيط المهام اليومية بشكل كبير.
تتضمن بايثون مكتبة “smtplib” في مكتبتها القياسية، مما يتيح إرسال البريد الأساسي دون الحاجة إلى إضافة وحدات خارجية. في هذه المقالة، نشرح الإعداد الأساسي والخطوات لإرسال البريد باستخدام بايثون ونقدّم طرقًا عملية باستخدام أمثلة شفرة حية. كما نغطي مواضيع متقدمة بالتفصيل، مثل رسائل البريد المهيكلة بـHTML، وإرسال رسائل مرفقة، وإعدادات أمان Gmail، وإرسال البريد باليابانية، والإرسال الجماعي إلى عدة مستلمين.
بنهاية هذا الدليل، ستتمكن من إرسال رسائل البريد باستخدام بايثون بسهولة وستمتلك المعرفة لتطبيق ذلك في مجموعة متنوعة من الحالات.
2. كيفية إرسال البريد الإلكتروني باستخدام بايثون
لإرسال البريد باستخدام بايثون، استخدم مكتبة بايثون القياسية “smtplib”. تتيح لك هذه المكتبة إرسال البريد عبر خادم SMTP ببساطة عن طريق كتابة الكود. أدناه نقدم نظرة عامة مفصلة على وحدة smtplib والخطوات الأساسية لإرسال البريد.
مقدمة عن وحدة smtplib
وحدة smtplib هي جزء من مكتبة بايثون القياسية وتدعم بروتوكول عميل SMTP. باستخدام هذه الوحدة، يمكنك الاتصال مباشرةً بخادم SMTP من بايثون وإرسال البريد.
الميزات الرئيسية لـ smtplib
- تتواصل بسهولة مع خوادم SMTP.
- لا تحتاج إلى وحدات خارجية إضافية؛ فهي مدمجة مع بايثون، لذا لا حاجة لإعدادات إضافية.
- تدعم إعدادات الأمان ومعالجة الأخطاء.
الخطوات الأساسية لإرسال البريد
الآن سنستعرض الخطوات الأساسية لإرسال البريد باستخدام بايثون. باتباع الخطوات أدناه، يمكنك إرسال البريد بسهولة.
1. كيفية الاتصال بخادم SMTP
أولاً، تحتاج إلى الاتصال بخادم SMTP. هذه هي نقطة الانطلاق لإرسال البريد. عادةً ما تستخدم خوادم SMTP التي توفرها خدمات مثل Gmail أو Yahoo Mail أو Outlook، ولكن يمكن أيضًا استخدام خادم SMTP مخصص للشركة.
import smtplib
# SMTP server settings
smtp_server = "smtp.example.com" # Example: For Gmail, use "smtp.gmail.com"
smtp_port = 587 # Common port number. For Gmail, use 587
2. إعداد مصادقة الدخول
بعد إنشاء الاتصال بخادم SMTP، سجّل الدخول باستخدام عنوان البريد الإلكتروني للمرسل وكلمة المرور. عند استخدام خدمات مثل Gmail، قد تكون هناك حاجة إلى إعدادات أمان إضافية.
# Email account information
username = "your_email@example.com"
password = "your_password"
# Connect and log in to the SMTP server
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # Establish a secure connection
server.login(username, password)
3. إنشاء وإرسال البريد
بعد ذلك، أنشئ محتوى البريد المراد إرساله. حدد عنوان المستلم، والموضوع، والنص، ثم أرسله عبر خادم SMTP.
# Email sending information
to_address = "recipient@example.com"
subject = "Test email"
body = "This email was sent from Python."
# Email format
message = f"Subject: {subject}
{body}"
# Send email
server.sendmail(username, to_address, message)
print("Email has been sent!")
4. نقاط رئيسية لمعالجة الأخطاء
يمكن أن تتسبب الاتصالات بخادم SMTP وإرسال البريد في حدوث أخطاء غير متوقعة. لهذا السبب، استخدم كتل try‑except لتتمكن من معالجة الأخطاء بشكل مناسب.
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.sendmail(username, to_address, message)
print("The email was sent successfully!")
except Exception as e:
print("Email send error:", e)
finally:
server.quit() # Close the connection
الخلاصة
هذا يغطي الإجراء الأساسي لإرسال البريد الإلكتروني باستخدام بايثون. بمجرد أن تتقن هذه العملية، يمكنك أتمتة الرسائل، وإرسال عدة رسائل في آن واحد، وتطبيقها بطرق مختلفة. في القسم التالي، سنستعرض بالتفصيل كيفية إرسال رسائل نصية عادية، ورسائل HTML، ورسائل مع مرفقات باستخدام أمثلة شفرة فعلية.

3. عملي: أمثلة شفرة إرسال البريد الإلكتروني في بايثون
من هنا، سنقدم أمثلة شفرة فعلية لإرسال البريد الإلكتروني باستخدام بايثون. سنشرح خطوة بخطوة كيفية إرسال رسائل نصية عادية، ورسائل HTML، ورسائل مع مرفقات.
إرسال رسائل نصية عادية
أولاً، إليك كيفية إرسال أبسط شكل: رسالة نصية عادية. سنستخدم وحدة smtplib لإرسال رسالة نصية بسيطة.
مثال الشفرة
import smtplib
# Email account information
smtp_server = "smtp.example.com"
smtp_port = 587
username = "your_email@example.com"
password = "your_password"
# Recipient and contents
to_address = "recipient@example.com"
subject = "Plain text email test"
body = "This is a plain text email sent from Python."
# Email format
message = f"Subject: {subject}
{body}"
try:
# Connect to the server
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.sendmail(username, to_address, message)
print("Plain text email sent!")
except Exception as e:
print("Email send error:", e)
finally:
server.quit()
إرسال رسائل HTML
بعد ذلك، سنشرح كيفية إرسال رسائل بصيغة HTML. تتيح لك رسائل HTML تنسيق النص وإدراج الروابط. عند تضمين شفرة HTML في جسم الرسالة، استخدم وحدة email.mime لمعالجة HTML بشكل صحيح.
مثال الشفرة
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# Email account information
smtp_server = "smtp.example.com"
smtp_port = 587
username = "your_email@example.com"
password = "your_password"
# Recipient and contents
to_address = "recipient@example.com"
subject = "HTML email test"
html_content = '''
<html>
<body>
<h1>Hello</h1>
<p>This is an HTML-formatted email sent from <strong>Python</strong>.</p>
<a href="https://example.com">Click here</a>
</body>
</html>
'''
# Create the email
message = MIMEMultipart()
message["From"] = username
message["To"] = to_address
message["Subject"] = subject
message.attach(MIMEText(html_content, "html"))
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.sendmail(username, to_address, message.as_string())
print("HTML email sent!")
except Exception as e:
print("Email send error:", e)
finally:
server.quit()
إرسال رسائل مع مرفقات
بعد ذلك، سنظهر كيفية إرسال رسائل مع ملفات مرفقة. على سبيل المثال، يمكنك إرفاق ملفات PDF أو صور برسالتك. يستخدم هذا الفعل فئة MIMEBase من وحدة email.mime.
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
# Email account information
smtp_server = "smtp.example.com"
smtp_port = 587
username = "your_email@example.com"
password = "your_password"
# Recipient and contents
to_address = "recipient@example.com"
subject = "Test email with attachment"
body = "I have attached a file. Please check it."
# Create the email
message = MIMEMultipart()
message["From"] = username
message["To"] = to_address
message["Subject"] = subject
message.attach(MIMEText(body, "plain"))
# Attach file
filename = "example.pdf" # Name of the file to attach
with open(filename, "rb") as attachment:
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header("Content-Disposition", f"attachment; filename={filename}")
message.attach(part)
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.sendmail(username, to_address, message.as_string())
print("Email with attachment sent!")
except Exception as e:
print("Email send error:", e)
finally:
server.quit()
ملخص
باستخدام أمثلة الشيفرة أعلاه، يمكنك إرسال أنواع مختلفة من البريد الإلكتروني باستخدام Python. بناءً على احتياجاتك، يمكنك الاختيار بين النص العادي، HTML، أو رسائل البريد مع المرفقات. في القسم التالي، سنستخدم Gmail كمثال لشرح الإعدادات المحددة والاحتياطات عند استخدام خادم SMTP معين.
4. إرسال البريد الإلكتروني باستخدام Gmail
يوضح هذا القسم بالتفصيل كيفية إرسال البريد الإلكتروني باستخدام Gmail وPython. يُعد Gmail شائعًا ويوفر خادم SMTP يمكن لبرامج Python الوصول إليه بسهولة. ومع ذلك، يتطلب إرسال البريد عبر Gmail بعض إعدادات الأمان.
إعدادات SMTP لـ Gmail
لإرسال البريد باستخدام Gmail، استخدم معلومات خادم SMTP التالية:
- خادم SMTP :
smtp.gmail.com - المنفذ : 587 (استخدام TLS) أو 465 (استخدام SSL)
- المصادقة : مطلوبة
مثال على إعداد أساسي
import smtplib
from email.mime.text import MIMEText
# Gmail SMTP server settings
smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your_email@gmail.com"
password = "your_password"
# Recipient and content
to_address = "recipient@example.com"
subject = "Test email from Gmail"
body = "This email was sent through Gmail from Python."
# Create the email content
message = MIMEText(body)
message["From"] = username
message["To"] = to_address
message["Subject"] = subject
try:
# Connect to the server and send the email
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # Use TLS to enhance security
server.login(username, password)
server.sendmail(username, to_address, message.as_string())
print("The email was sent using Gmail!")
except Exception as e:
print("Email sending error:", e)
finally:
server.quit()
اعتبارات الأمان
عند استخدام حساب Gmail، يجب مراجعة إعدادات الأمان الخاصة بك. عادةً ما يفرض Gmail قيودًا أمنية على الوصول من تطبيقات الطرف الثالث. لذلك، عند الوصول من Python، تكون الخطوات التالية ضرورية.
الحصول على كلمة مرور تطبيق
- تفعيل المصادقة الثنائية : قم بتفعيل التحقق بخطوتين في إعدادات حساب Gmail الخاص بك. سيسمح ذلك بإنشاء كلمة مرور تطبيق.
- إنشاء كلمة مرور تطبيق : من إعدادات حساب Gmail > الأمان > كلمات مرور التطبيقات، أنشئ كلمة مرور تطبيق مخصصة لبرنامج Python الخاص بك. تُستخدم هذه الكلمة بدلاً من كلمة مرور الدخول العادية.
ملاحظات
- إدارة كلمات مرور التطبيقات : احفظ كلمات مرور التطبيقات بسرية تامة وأمان.
- أمان الحساب : يُنصح باستخدام كلمات مرور التطبيقات للمساعدة في منع الوصول غير المصرح به إلى حساب Gmail الخاص بك.
مثال على الكود (باستخدام كلمة مرور تطبيق)
import smtplib
from email.mime.text import MIMEText
smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your_email@gmail.com"
app_password = "your_app_password" # Use an app password instead of your regular password
to_address = "recipient@example.com"
subject = "Test email from Gmail using an app password"
body = "This email was sent from Gmail using an app password."
message = MIMEText(body)
message["From"] = username
message["To"] = to_address
message["Subject"] = subject
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, app_password)
server.sendmail(username, to_address, message.as_string())
print("The email was sent using Gmail!")
except Exception as e:
print("Email sending error:", e)
finally:
server.quit()
الملخص
عند إرسال بريد إلكتروني من بايثون عبر جيميل، تكون إعدادات أمان حسابك مهمة. يسمح لك استخدام كلمة مرور التطبيق بإرسال البريد الإلكتروني بشكل أكثر أمانًا. سيقدم القسم التالي تقنيات متقدمة لإرسال البريد الإلكتروني في بايثون، بما في ذلك الإرسال إلى عدة مستلمين، الإرسال المجدول الآلي، وكيفية إرسال رسائل بريد إلكتروني باليابانية. 
5. التطبيقات المتقدمة: تقنيات إرسال البريد الإلكتروني
من هنا، سنغطي تقنيات إرسال البريد الإلكتروني المتقدمة في بايثون. يشرح هذا القسم طرقًا عملية مثل الإرسال الجماعي إلى عدة مستلمين، أتمتة رسائل البريد المجدولة، وإرسال رسائل بريد إلكتروني باليابانية.
الإرسال إلى عدة مستلمين
باستخدام بايثون، يمكنك إرسال رسالة إلى عدة مستلمين في آن واحد. من خلال ضبط حقول البريد “To” و “Cc” و “Bcc” بشكل صحيح وإدارة المستلمين كقائمة، يصبح الإرسال الجماعي بسيطًا.
مثال على الشيفرة
فيما يلي مثال على الشيفرة يحدد عدة مستلمين في حقل “To”.
import smtplib
from email.mime.text import MIMEText
# SMTP server info
smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your_email@gmail.com"
password = "your_app_password"
# Recipient list
to_addresses = ["recipient1@example.com", "recipient2@example.com"]
subject = "Test email to multiple recipients"
body = "This email was sent to multiple recipients at once."
# Create the email
message = MIMEText(body)
message["From"] = username
message["To"] = ", ".join(to_addresses) # Separate multiple recipients with commas
message["Subject"] = subject
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.sendmail(username, to_addresses, message.as_string())
print("The email to multiple recipients has been sent!")
except Exception as e:
print("Email sending error:", e)
finally:
server.quit()
أتمتة إرسال البريد الإلكتروني المجدول
لإرسال رسائل البريد إلكتروني بشكل دوري، من المفيد إعداد جدول. يحتوي بايثون على مكتبات مثل “schedule” ووحدة “time” لتشغيل المهام المتكررة بناءً على فترات زمنية. على سبيل المثال، يمكنك تجميع سكريبت لإرسال رسائل البريد إلكتروني تلقائيًا في وقت محدد.
مثال على الشيفرة (الإرسال المجدول باستخدام schedule)
import smtplib
from email.mime.text import MIMEText
import schedule
import time
def send_email():
smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your_email@gmail.com"
password = "your_app_password"
to_address = "recipient@example.com"
subject = "Scheduled email"
body = "This is an email sent on a regular schedule."
message = MIMEText(body)
message["From"] = username
message["To"] = to_address
message["Subject"] = subject
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.sendmail(username, to_address, message.as_string())
print("Email has been sent!")
except Exception as e:
print("Email sending error:", e)
finally:
server.quit()
# Send the email every day at 9:00 AM
schedule.every().day.at("09:00").do(send_email)
while True:
schedule.run_pending()
time.sleep(1)
هذا البرنامج النصي سيُرسل بريدًا إلكترونيًا تلقائيًا كل يوم في الوقت المحدد (هنا، الساعة 9:00 ص).
إرسال رسائل البريد الإلكتروني باليابانية
عند إرسال رسائل البريد الإلكتروني باليابانية باستخدام بايثون، يجب الانتباه إلى الترميز. خاصةً للموضوعات والنصوص التي تتضمن يابانية، قم بتكوين رسائلك لاستخدام ترميز UTF-8 لضمان النقل الصحيح.
مثال على الشيفرة (دعم اليابانية)
import smtplib
from email.mime.text import MIMEText
from email.header import Header
smtp_server = "smtp.gmail.com"
smtp_port = 587
username = "your_email@gmail.com"
password = "your_app_password"
to_address = "recipient@example.com"
# Japanese subject and body
subject = Header("Test email in Japanese", "utf-8")
body = "This is an email sent in Japanese from Python."
message = MIMEText(body, "plain", "utf-8")
message["From"] = username
message["To"] = to_address
message["Subject"] = subject
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.sendmail(username, to_address, message.as_string())
print("The Japanese email has been sent!")
except Exception as e:
print("Email sending error:", e)
finally:
server.quit()
الملخص
في هذا القسم، غطينا تقنيات متقدمة لإرسال البريد الإلكتروني باستخدام بايثون. استخدام ميزات مثل الإرسال إلى عدة مستلمين، أتمتة الرسائل المجدولة، ودعم اللغة اليابانية يجعل إرسال البريد أكثر عملية. القسم التالي سيُلخّص المقال ويستعرض النقاط الرئيسية.
6. الملخص
استعرض هذا المقال كيفية إرسال البريد الإلكتروني باستخدام بايثون، من الأساسيات إلى التقنيات المتقدمة. باستخدام مكتبة بايثون القياسية “smtplib”، يصبح إرسال البريد بسيطًا ويمكن تطبيقه في المهام اليومية والتطبيقات.
فيما يلي ملخص للنقاط الرئيسية التي تم تعلمها في كل قسم.
- الخطوات الأساسية لإرسال البريد الإلكتروني
- تعلمت كيفية استخدام وحدة “smtplib” في بايثون لإرسال البريد عبر خادم SMTP.
- كما غطينا سير العمل من كتابة الرسالة إلى إرسالها وأهمية معالجة الأخطاء.
- أمثلة عملية على شيفرات إرسال البريد
- قدمنا كيفية إرسال رسائل نصية عادية، رسائل HTML، ورسائل مع مرفقات، مع أمثلة شيفرة لكل منها.
- هذا مكنك من تعديل الشيفرة لتتناسب مع صيغ البريد المختلفة لتلبية احتياجات متنوعة.
- إرسال البريد باستخدام Gmail
- شرحنا إعدادات خادم SMTP الخاص بـ Gmail وإجراءات الأمان باستخدام كلمات مرور التطبيقات.
- كررنا أنه عند استخدام حساب Gmail، يجب تفعيل التحقق بخطوتين وإعداد كلمة مرور تطبيق.
- تقنيات متقدمة لإرسال البريد الإلكتروني
- غطينا الإرسال إلى عدة مستلمين، أتمتة الرسائل المجدولة، وتقنيات التعامل مع المحتوى الياباني.
- على وجه الخصوص، شددنا على أن إعدادات الترميز الصحيحة مهمة عند إرسال رسائل تتضمن يابانية في الموضوع أو النص.
كيفية استخدام هذا الدليل
باتباع هذا الدليل، يمكنك بناء مرسلات بريد إلكتروني آلية، أو أنظمة إشعارات مجدولة، أو تطبيقات إشعارات باستخدام بايثون. كمهارة عملية، يمكنك تطبيقها في دعم العملاء، إدارة العمليات، أو كجزء من خدمات الإشعارات.
يمكن تطبيق إرسال البريد الإلكتروني باستخدام بايثون عبر العديد من المهام وحالات الاستخدام، ويمكن أن تكون مرونتها وراحتها مفيدة للغاية في الأعمال. جرّبها ودمجها في مشاريعك.




