এই আর্টিকেলে আমরা দেখব কিভাবে পাইথন ব্যবহার করে অ্যাট্যাচমেন্টসহ ইমেইল পাঠানো যায়। মেইল পাঠাতে কোনো এক্সটার্নাল লাইব্রেরি দরকার নেই। SMTPlib নামে একটি মডিউল পাইথনের সাথে আসে। এটি SMTP (Simple Mail Transfer Protocol) ব্যবহার করে মেইল পাঠায়। এটি মেইলিং-এর জন্য SMTP ক্লায়েন্ট সেশন অবজেক্ট তৈরি করে।
SMTP-র জন্য বৈধ সোর্স এবং ডেস্টিনেশন ইমেইল আইডি, এবং পোর্ট নম্বর দরকার। পোর্ট নম্বর বিভিন্ন সাইটের জন্য ভিন্ন। উদাহরণস্বরূপ, গুগলের জন্য পোর্ট 587।
প্রথমে মেইল পাঠানোর মডিউল ইম্পোর্ট করতে হবে।
import smtplib
এখানে আমরা MIME (Multipurpose Internet Mail Extension) মডিউলও ব্যবহার করছি যাতে এটি আরও ফ্লেক্সিবল হয়। MIME হেডার ব্যবহার করে আমরা সেন্ডার এবং রিসিভার ইনফরমেশন এবং অন্যান্য ডিটেইলস স্টোর করতে পারি। MIME অ্যাট্যাচমেন্ট মেইলের সাথে সেট করার জন্যও দরকার।
আমরা গুগলের Gmail সার্ভিস ব্যবহার করছি মেইল পাঠাতে। তাই গুগলের সিকিউরিটি উদ্দেশ্যে কিছু সেটিংস দরকার (যদি আবশ্যক হয়)। যদি সেটিংস সেট আপ না থাকে, তাহলে নিচের কোড কাজ নাও করতে পারে, যদি গুগল থার্ড-পার্টি অ্যাপ থেকে এক্সেস সাপোর্ট না করে।
অ্যাক্সেস অনুমতি দিতে, গুগল অ্যাকাউন্টে 'Less Secure App Access' সেটিংস সেট করতে হবে। যদি টু-স্টেপ ভেরিফিকেশন অন থাকে, তাহলে লেস সিকিউর অ্যাক্সেস ব্যবহার করা যাবে না।
এই সেটআপ কমপ্লিট করতে, গুগলস অ্যাডমিন কনসোলে যান, এবং Less Secure App সেটআপ সার্চ করুন।

SMTP (smtplib) ব্যবহার করে অ্যাট্যাচমেন্টসহ মেইল পাঠানোর ধাপসমূহ
- MIME তৈরি করুন
- MIME-এ সেন্ডার, রিসিভার অ্যাড্রেস যোগ করুন
- MIME-এ মেইল টাইটেল যোগ করুন
- MIME-এ বডি অ্যাট্যাচ করুন
- ফাইলটি বাইনারি মোডে খুলুন, যা মেইলের সাথে অ্যাট্যাচ হবে
- বাইট স্ট্রিম পড়ে অ্যাট্যাচমেন্টকে base64 এনকোডিং স্কিম দিয়ে এনকোড করুন
- অ্যাট্যাচমেন্টের জন্য হেডার যোগ করুন
- বৈধ পোর্ট নম্বর ও সিকিউরিটি ফিচারের সাথে SMTP সেশন শুরু করুন
- সিস্টেমে লগইন করুন
- মেইল পাঠিয়ে এক্সিট করুন
উদাহরণ কোড
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
mail_content = '''Hello,
This is a test mail.
In this mail we are sending some attachments.
The mail is sent using Python SMTP library.
Thank You'''
# মেইল অ্যাড্রেস ও পাসওয়ার্ড
sender_address = 'sender123@gmail.com'
sender_pass = 'xxxxxxxx'
receiver_address = 'receiver567@gmail.com'
# MIME সেটআপ
message = MIMEMultipart()
message['From'] = sender_address
message['To'] = receiver_address
message['Subject'] = 'A test mail sent by Python. It has an attachment.' # সাবজেক্ট লাইন
# মেইলের বডি এবং অ্যাট্যাচমেন্ট
message.attach(MIMEText(mail_content, 'plain'))
attach_file_name = 'TP_python_prev.pdf'
attach_file = open(attach_file_name, 'rb') # ফাইলটি বাইনারি মোডে খুলুন
payload = MIMEBase('application', 'octate-stream')
payload.set_payload((attach_file).read())
encoders.encode_base64(payload) # অ্যাট্যাচমেন্ট এনকোড করুন
# ফাইলনেমের সাথে পেলোড হেডার যোগ করুন
payload.add_header('Content-Disposition', 'attachment', filename=attach_file_name)
message.attach(payload)
# মেইল পাঠানোর জন্য SMTP সেশন তৈরি
session = smtplib.SMTP('smtp.gmail.com', 587) # gmail with port
session.starttls() # সিকিউরিটি ইনেবল করুন
session.login(sender_address, sender_pass) # mail_id এবং password দিয়ে লগইন
text = message.as_string()
session.sendmail(sender_address, receiver_address, text)
session.quit()
print('Mail Sent')
আউটপুট
D:\Python TP\Python 450\linux>python 327.Send_Mail.py Mail Sent
