021-71053903 [email protected] پشتیبانی از شنبه تا چهارشنبه ساعت 9 الی 16

ارسال ایمیل با کتابخانه smtplib در پایتون

کتابخانه smtplib

اگر مقالات این مجموعه را در زمینه زبان برنامه نویسی پایتون مطالعه کرده باشید حتما تا الان به این موضوع پی برده اید که پایتون زبان برنامه نویسی می‌باشد که شامل کتابخانه ها ، فریمورک ها و ماژول های بسیار زیادی میباشد.

در این مقاله قصد دارین یکی از کتابخانه های کاربردی پایتون را نام ببریم و در مورد توانایی ها و کاربرد های آن به شما توضیح دهیم . پس اگر علاقمند هستید که توانایی این را داشته باشید که از یک حساب کاربری ایمیل به یک یا چند حساب پیامی را ارسال کنید در ادامه این مقاله با ما همراه باشید.

smtplib چیست؟

کتابخانه‌ای است که با گرفتن بعضی داده ها و پارامتر ها مانند username فرستنده username گیرنده یا username های گیرنده password فرستنده و پیام دلخواه پیامی را از فرستنده به گیرنده با هر بار اجرای برنامه ارسال می کند.

نصب smtplib

شاید تا الان برای شما این سوال پیش آمده باشد که آیا نیازی هست این کتابخانه را نصب کنیم؟

خیر.

نیازی به این کار نیست زیرا این کتابخانه به صورت پیش فرض روی پایتون نصب است.

اما در صورتی که روی پایتون شما نصب نبود به راحتی میتوانید با دستور pip install smtplib این کتابخانه رو بر روی سیستم خود نصب کنید.

 

کد های مثال زیر شاید بهتر بتواند شما را با این کتابخانه آشنا کند:

import smtplib, ssl

port = 465  # For SSL
password = input("Type your password and press enter: ")

# Create a secure SSL context
context = ssl.create_default_context()

with smtplib.SMTP_SSL("smtp.gmail.com", port, context=context) as server:
    server.login("[email protected]", password)

در کد بالا نخست کتابخانه‌ های مورد نظر را که یکی از آنها smtplib است و دیگری ssl که اگر به ادامه کد دقت کنید ما این کتابخانه را برای برقراری ارتباط راحت تر با وبسایت google mail یا همان gmail صدا زده‌ایم (import کرده‌ایم).

و همانطور که می‌بینید از smtplib.SMTP_SSL برای سرور استفاده کردیم و پورت 465 رو خودمون براش در نظر گرفتیم اما اگر این پورت یا پورت دیگری رو شما وارد نکنید ssl خودش به صورت پیش فرض پورت 465 رو در نظر میگیره

سپس پارامتر های مورد نیاز رو ورودی گرفته یا خودمان وارد کرده‌ایم و توسط آنها به حساب gmail خود لوگبن می‌کنیم.

استفاده از starttls()

شما با این روش میتوانید بدون استفاده از smtplib.SMTP_SSL که از همان نخست ارتباط امنی ایجاد می‌‌کند نخست یک اتصال SMTP نا امن ایجاد کرده و سپس آن را با استفاده از starttls() رمزگذاری کنید.

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

قطعه کد زیر به جای قالب با SMTP () به عنوان سرور ، از ()server = SMTP استفاده می کند: که ما در مثال قبلی استفاده کردیم. برای اطمینان از خراب نشدن کد در هنگام بروز مشکلی ، کد اصلی خود را در یک بلوک try قرار دهید و به یک بلاک اجازه دهید هر پیام خطایی را پرینت کند.

import smtplib, ssl

smtp_server = "smtp.gmail.com"
port = 587  # For starttls
sender_email = "[email protected]"
password = input("Type your password and press enter: ")

# Create a secure SSL context
context = ssl.create_default_context()

# Try to log in to server and send email
try:
    server = smtplib.SMTP(smtp_server,port)
    server.ehlo() # Can be omitted
    server.starttls(context=context) # Secure the connection
    server.ehlo() # Can be omitted
    server.login(sender_email, password)
except Exception as e:
    # Print any error messages to stdout
    print(e)
finally:
    server.quit()

ارسال پیام

پس از اینکه ارتباط را با سرور برقرار کردید میتوانید توسط روش های گفته شده متوانید پیامتان را ارسال کنید.

نکته : ehlo  و helo یک پروتکل امنیتی برای شبکه ایمیل می باشند.

server.sendmail(sender_email, receiver_email, message)
import smtplib, ssl

port = 465  # For SSL
smtp_server = "smtp.gmail.com"
sender_email = "[email protected]"  # Enter your address
receiver_email = "[email protected]"  # Enter receiver address
password = input("Type your password and press enter: ")
message = """\
Subject: Hi there

This message is sent from Python."""

context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)

در کد بالا متن پیام با subject: hi There شروع شده و این باعث میشود Hi there در قسمت subject یا موضوع قرار بگیرد.

ارسال پیام توسط روش دوم:

import smtplib, ssl

port = 587  # For starttls
smtp_server = "smtp.gmail.com"
sender_email = "[email protected]"
receiver_email = "[email protected]"
password = input("Type your password and press enter:")
message = """\
Subject: Hi there

This message is sent from Python."""

context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, port) as server:
    server.ehlo()  # Can be omitted
    server.starttls(context=context)
    server.ehlo()  # Can be omitted
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)

برای اطلاعات بیشتر میتوانید به وبسایت:

docs.python.org

مقالات بیشتر:

15 پروژه مبتدی با پایتون

آموزش رابط گرافیکی پایتون : Tkinter

محمد مهدی عینی

17 مطلب منتشر شده

محمدمهدی عینی ، علاقه مند به برنامه نویسی و علوم کامپیوتری ، برنامه نویس زبان برنامه نویسی پایتون ، مدرس برنامه نویسی GUI تحت ویندوز ، دانش آموز دبیرستان استعداد های درخشان باهنر 1

درباره این مطلب نظر دهید !

محصولات فروش پایتونی ها

%60
تخفیف

آموزش فیگما (Figma)

30,000 تومان
3
%69
تخفیف

آموزش برنامه نویسی پایتون

35,000 تومان
2