آموزش ارسال ایمیل با استفاده از SMTP در برنامه نویسی پایتون ۳

3 سال پیش

آموزش ارسال ایمیل با استفاده از SMTP در برنامه نویسی پایتون ۳

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش ارسال ایمیل با استفاده از SMTP در برنامه نویسی پایتون ۳ خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش پایتون

پروتکل انتقال ایمیل ساده (SMTP) پروتکلی است که ارسال ایمیل و مسیریابی ایمیل بین سرورهای پست الکترونیکی را مدیریت می کند.

پایتون ماژول smtplib را ارائه می‌کند که یک شی جلسه مشتری SMTP را تعریف می‌کند که می‌تواند برای ارسال نامه‌ها به هر ماشین اینترنتی با دیمون شنونده SMTP یا ESMTP استفاده شود.

در اینجا یک دستور ساده برای ایجاد یک شی SMTP وجود دارد که بعداً می تواند برای ارسال یک ایمیل استفاده شود –

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

 

در اینجا جزئیات پارامترها آمده است

  • میزبان – این میزبانی است که سرور SMTP شما را اجرا می کند. شما می توانید آدرس IP میزبان یا یک نام دامنه مانند tutorialspoint.com را مشخص کنید. این یک استدلال اختیاری است.
  • پورت – اگر آرگومان میزبان را ارائه می کنید، باید پورتی را مشخص کنید که سرور SMTP در آن گوش می دهد. معمولاً این پورت ۲۵ خواهد بود.
  • local_hostname – اگر سرور SMTP شما بر روی دستگاه محلی شما در حال اجرا است، می توانید فقط گزینه localhost را مشخص کنید.
  • یک شی SMTP دارای یک روش نمونه به نام sendmail است که معمولاً برای انجام کار ارسال یک پیام استفاده می شود. سه پارامتر می گیرد –
  • فرستنده – رشته ای با آدرس فرستنده.
  • گیرنده ها – لیستی از رشته ها، یکی برای هر گیرنده.
  • پیام – پیامی به عنوان رشته ای که مطابق با RFC های مختلف مشخص شده است.

مثال

در اینجا یک راه ساده برای ارسال یک ایمیل با استفاده از اسکریپت پایتون وجود دارد. یکبار امتحان کنید –

#!/usr/bin/python3

import smtplib

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

message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
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 همراه با پیام، آدرس from و آدرس مقصد به عنوان پارامتر استفاده کنید (حتی اگر آدرس‌های از و به درون خود ایمیل هستند، همیشه برای مسیریابی نامه استفاده نمی‌شوند).

اگر سرور SMTP را روی دستگاه محلی خود اجرا نمی کنید، می توانید از سرویس گیرنده smtplib برای برقراری ارتباط با یک سرور SMTP راه دور استفاده کنید. مگر اینکه از یک سرویس ایمیل وب (مانند جیمیل یا یاهو میل) استفاده می کنید، ارائه دهنده ایمیل شما باید جزئیات سرور ایمیل خروجی را به شما ارائه کرده باشد که می توانید آنها را به شرح زیر ارائه کنید –

mail = smtplib.SMTP('smtp.gmail.com', 587)

 

ارسال ایمیل HTML با استفاده از پایتون

هنگامی که با استفاده از پایتون یک پیام متنی ارسال می کنید، تمام محتوا به عنوان متن ساده در نظر گرفته می شود. حتی اگر تگ های HTML را در یک پیام متنی قرار دهید، به صورت متن ساده نمایش داده می شود و تگ های HTML بر اساس نحو HTML قالب بندی نمی شوند. با این حال، پایتون گزینه ای برای ارسال یک پیام HTML به عنوان پیام HTML واقعی فراهم می کند.

هنگام ارسال یک پیام ایمیل، می توانید نسخه Mime، نوع محتوا و کاراکتر را برای ارسال یک ایمیل HTML مشخص کنید.

مثال

در زیر مثالی برای ارسال محتوای HTML به صورت ایمیل آورده شده است. یکبار امتحان کنید –

#!/usr/bin/python3

import smtplib

message = """From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
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

<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""

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

 

ارسال فایل های پیوست به صورت ایمیل

برای ارسال ایمیل با محتوای ترکیبی نیاز به تنظیم هدر نوع محتوا روی چندبخشی/مختلط است. سپس، متن و بخش های پیوست را می توان در محدوده مشخص کرد.

یک مرز با دو خط فاصله به دنبال یک عدد منحصر به فرد شروع می شود که نمی تواند در قسمت پیام ایمیل ظاهر شود. یک مرز نهایی که قسمت پایانی ایمیل را نشان می دهد نیز باید با دو خط فاصله به پایان برسد.

فایل های پیوست شده باید با تابع pack(“m”) کدگذاری شوند تا قبل از ارسال کدگذاری پایه ۶۴ داشته باشند.

مثال

در زیر یک مثال آورده شده است که فایل /tmp/test.txt را به عنوان پیوست ارسال می کند. یکبار امتحان کنید –

#!/usr/bin/python3

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 <me@fromdomain.net>
To: To Person <amrood.admin@gmail.com>
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")

 

منبع.

 

لیست جلسات قبل آموزش برنامه نوبسی پایتون ۳

  1. آموزش برنامه نویسی پایتون ۳
  2. آموزش موارد جدید در برنامه نویسی پایتون ۳
  3. آموزش مرور کلی برنامه نویسی پایتون ۳
  4. آموزش راه اندازی محیط برنامه نویسی پایتون ۳
  5. آموزش نحو در برنامه نویسی پایتون ۳
  6. آموزش انواع متغیرها در برنامه نویسی پایتون ۳
  7.  آموزش عملگرهای پایه در برنامه نویسی پایتون ۳
  8.  آموزش تصمیم گیری در برنامه نویسی پایتون ۳
  9.  آموزش حلقه ها در برنامه نویسی پایتون ۳
  10. آموزش اعداد در برنامه نویسی پایتون ۳
  11. آموزش رشته ها در برنامه نویسی پایتون ۳
  12.  آموزش لیست ها در برنامه نویسی پایتون ۳
  13.  آموزش تاپل ها در برنامه نویسی پایتون ۳
  14. آموزش دیکشنری در برنامه نویسی پایتون ۳
  15.  آموزش تاریخ و زمان در برنامه نویسی پایتون ۳
  16.  آموزش توابع در برنامه نویسی پایتون ۳
  17. آموزش ماژول ها در برنامه نویسی پایتون ۳
  18. آموزش فایل های ورودی/خروجی در برنامه نویسی پایتون ۳
  19. آموزش مدیریت استثنا در برنامه نویسی پایتون ۳
  20. آموزش شی گرایی در برنامه نویسی پایتون ۳
  21.  آموزش عبارات منظم در برنامه نویسی پایتون ۳
  22. آموزش CGI در برنامه نویسی پایتون ۳
  23.  آموزش دسترسی به پایگاه داده MySQL در برنامه نویسی پایتون ۳
  24.  آموزش برنامه نویسی شبکه در برنامه نویسی پایتون ۳
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه