إرسال بريد باستخدام برتوكول إرسال البريد الإلكتروني في بايثون بيثون Python Sending Email using SMTP

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

Python  Sending Email using SMTP 

إرسال بريد باستخدام برتوكول إرسال البريد الإلكتروني في بايثون بيثون Python  Sending Email using SMTP 

بروتوكول نقل البريد البسيط (SMTP) هو بروتوكول يعالج إرسال البريد الإلكتروني وتوجيه البريد الإلكتروني بين خوادم البريد.

 يوفر Python وحدة smtplib ، والتي تحدد كائن جلسة عميل SMTP الذي يمكن استخدامه لإرسال البريد إلى أي جهاز إنترنت باستخدام برنامج الخفي لمستمع SMTP أو ESMTP.

 فيما يلي بناء جملة بسيط لإنشاء كائن SMTP واحد ، والذي يمكن استخدامه لاحقًا لإرسال بريد إلكتروني -
import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
Here is the detail of the parameters −
هنا تفاصيل الوسيطات
  • host −
  • هذا هو المضيف الذي يشغل خادم SMTP الخاص بك.  يمكنك تحديد عنوان IP للمضيف أو اسم مجال مثل gmail.com.  هذه حجة اختيارية. 
  • port −
  •  إذا كنت تقدم وسيطة مضيفة ، فأنت بحاجة إلى تحديد منفذ يستمع خادم SMTP إليه.  عادة ما يكون هذا المنفذ 25.
  • local_hostname −إذا كان خادم SMTP يعمل على جهازك المحلي ، فيمكنك تحديد مضيف محلي فقط من هذا الخيار.
يحتوي كائن SMTP على طريقة مثيل تُسمى sendmail ، والتي تُستخدم عادةً للقيام بمهمة إرسال رسالة بالبريد.  يستغرق ثلاثة معايير -

 المرسل - سلسلة مع عنوان المرسل.

 المستقبلات - قائمة من السلاسل ، واحدة لكل مستلم.

 الرسالة - رسالة منسقة كسلسلة كما هو محدد في RFCs المختلفة.

 مثال
 إليك طريقة بسيطة لإرسال بريد إلكتروني واحد باستخدام برنامج Python النصي.  جربه مرة واحدة -
#!/usr/bin/python

import smtplib

sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']

message = """From: From Person 
To: To Person 
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"
هنا ، قمت بوضع رسالة بريد إلكتروني أساسية في الرسالة ، باستخدام عرض أسعار ثلاثي ، مع الحرص على تنسيق الرؤوس بشكل صحيح.  يتطلب البريد الإلكتروني رأسًا من ، إلى ، والموضوع ، مفصولًا عن نص البريد الإلكتروني بسطر فارغ.

 لإرسال البريد الذي تستخدمه smtpObj للاتصال بملقم SMTP على الجهاز المحلي ، ثم استخدم أسلوب sendmail مع الرسالة وعنوان من وعنوان الوجهة كمعلمات (على الرغم من أن من وإلى عناوين داخل e  -البريد الإلكتروني نفسه ، لا تستخدم هذه دائمًا لتوجيه البريد).

 إذا كنت لا تقوم بتشغيل خادم SMTP على جهازك المحلي ، يمكنك استخدام عميل smtplib للتواصل مع خادم SMTP بعيد.  ما لم تكن تستخدم خدمة بريد الويب (مثل Hotmail أو Yahoo! Mail) ، يجب أن يكون مزود بريدك الإلكتروني قد زودك بتفاصيل خادم البريد الصادر التي يمكنك تقديمها ، كما يلي -
smtplib.SMTP('mail.your-domain.com', 25)

Sending an HTML e-mail using Python

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

 أثناء إرسال رسالة بريد إلكتروني ، يمكنك تحديد إصدار Mime ونوع المحتوى ومجموعة الأحرف لإرسال بريد HTML الإلكتروني.

 مثال
 فيما يلي مثال على إرسال محتوى HTML كرسالة بريد إلكتروني.  جربه مرة واحدة -
#!/usr/bin/python

import smtplib

message = """From: From Person 
To: To Person 
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test

This is an e-mail message to be sent in HTML format

This is HTML message.

This is headline.

"""
try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print "Successfully sent email" except SMTPException: print "Error: unable to send email"

Sending Attachments as an E-mail

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

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

 يجب تشفير الملفات المرفقة مع وظيفة pack ("m") حتى يكون base64 ترميزًا قبل الإرسال.

 مثال
 فيما يلي المثال الذي يرسل ملف /tmp/test.txt كمرفق.  جربه مرة واحدة -
#!/usr/bin/python

import smtplib
import base64

filename = "/tmp/test.txt"

# Read a file and encode it into base64 format
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)  # base64

sender = 'webmaster@tutorialpoint.com'
reciever = 'amrood.admin@gmail.com'

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person 
To: To Person 
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

# Define the message action
part2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

%s
--%s
""" % (body,marker)

# Define the attachment section
part3 = """Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" %(filename, filename, encodedcontent, marker)
message = part1 + part2 + part3

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, reciever, message)
   print "Successfully sent email"
except Exception:
   print "Error: unable to send email"