বাণিজ্যিক ইমেল ক্লায়েন্টগুলো ইউজার-ফ্রেন্ডলি GUI-এর সুবিধা দেয়, কিন্তু আপনি যেসব ডেভেলপার বা কন্টেন্ট ক্রিয়েটর, তাদের ইমেলিং প্রয়োজনীয়তার জন্য যেসব লচিলতা এবং কাস্টমাইজেবিলিটি প্রয়োজন সেগুলো প্রায়শই এই ক্লায়েন্টগুলোতে নেই।
আপনার সোশ্যাল মিডিয়া চ্যানেলে নতুন সাবস্ক্রайবারের জন্য ধন্যবাদ ইমেল পাঠাতে হোক বা আপনার লেটেস্ট প্রজেক্টে ইমেল কার্যকারিতা যোগ করতে হোক, SMTP ব্যবহার করে পাইথনে অটোমেটেড মেসেজ পাঠাতে পারা একটি দক্ষতা যা নিঃসন্দেহে কাজে আসবে।
পড়তে থাকুন আপনি কিভাবে আপনার মেশিনে পাইথন স্ক্রিপ্ট দিয়ে ইমেল পাঠাতে পারেন সেটি জানতে।
SMTP কি?
সহজ ভাষায়, SMTP, বা Simple Mail Transfer Protocol, মেইল সার্ভারদের ইন্টারনেটের মাধ্যমে ইমেল ট্রান্সমিট করার একটি কমিউনিকেশন প্রোটোকল।
এটি TCP/IP স্যুটের অ্যাপ্লিকেশন লেয়ার একটি অলঙ্ঘনীয় অংশ, যা ইন্টারনেট বা অন্য সাদৃশ্য নেটওয়ার্কে যোগাযোগের জন্য ব্যবহৃত প্রোটোকলগুলোর একটি সেট। SMTP ইম্প্লিমেন্ট করা একটি নেটওয়ার্কে, store and forward নামে একটি প্রক্রিয়া মেইল নেটওয়ার্কের জুড়ে নিতে সাহায্য করে।
প্রতিটি এন্ডপয়েন্টে, Mail Transfer Agent (MTA) নামে সফ্টওয়্যার store and forward ব্যবহার করে অংশগ্রহণকারী SMTP সার্ভারগুলোর মধ্যে যোগাযোগ সুবিধা দেয়। SMTP-এর মূল ভূমিকা, সেটি হলো, একটি নেটওয়ার্কে এক পয়েন্ট থেকে অন্য পয়েন্টে মেইল কোথায় এবং কীভাবে যাবে সেটি নির্দেশ করা।
শুরু করুন
এই প্রোগ্রাম ব্যবহার করে ইমেল পাঠাতে আপনার একটি ইমেল অ্যাকাউন্ট প্রয়োজন। কারণ আমরা ইমেল ক্লায়েন্টের SMTP সার্ভিস ব্যবহার করব ইমেল পাঠাতে। এই টিউটোরিয়ালে, আমরা জিমেইল ব্যবহার করব।
আপনি একটি লোকাল SMTP ডিবাগিং সার্ভারও ব্যবহার করতে পারেন টেস্ট ইমেল পাঠাতে, কিন্তু এখন আমরা একটি ইমেল অ্যাকাউন্ট ব্যবহার করব ইমেল পাঠাতে কারণ এটা আরও ইনটুইটিভ।
একটি বিদ্যমান জিমেইল অ্যাকাউন্ট ব্যবহার করা সম্ভব, কিন্তু আপনি আপনার প্রোগ্রামের সাথে এক্সপেরিমেন্ট করলে এটা শীঘ্রই টেস্ট ইমেল দিয়ে পূর্ণ হয়ে যেতে পারে। এইीलেও আমরা পরামর্শ দিচ্ছি টেস্টিং-এর উদ্দেশ্যে একটি 'থ্রোয়ে' অ্যাকাউন্ট তৈরি করার জন্য।
এখন, আপনার জিমেইল অ্যাকাউন্টে less secure apps অ্যাক্সেস করার অপশন অন করুন। এটি আপনার প্রাইমারি ইমেলের গোপনীয়তা সেটিংস নিয়ে এক্সপেরিমেন্ট করা সুপারিশ করা হয় না সেজন্য থ্রোয়ে ইমেল ব্যবহার করা অন্য একটি কারণ।
পাইথনে ইমেল লিখুন
Python 3 smtplib (smtp library-এর সংক্ষিপ্ত) নামে একটি মডিউল প্রি-ইনস্টলড রূপে আসে, যা SMTP সার্ভারের সাথে কাজ করতে ব্যবহার করা যায়।
যেকোনো অন্য পাইথন মডিউলের মতো, আপনাকে প্রথমে smtplib ইম্পোর্ট করতে হবে।
import smtplib
SMTP অবজেক্ট ইনিশিয়ালাইজ করুন
এখন, আপনি smtplib ব্যবহার করে একটি SMTP অবজেক্ট তৈরি করতে পারেন, যা আপনাকে একটি প্রচলিত ইমেল ক্লায়েন্টের অধিকাংশ কার্যকারিতা দেবে। যाची, একটি SMTP অবজেক্টের ফাংশনগুলো শুধু ইনস্ট্যান্স মেথডের মাধ্যমে ব্যবহার করা যায়। সুতরাং, স্বাভাবিকভাবে, পরবর্তী ধাপ হচ্ছে একটি অবজেক্ট ইনস্ট্যান্স ঘোষণা করা।
mySMTP = smtplib.SMTP("smtp.google.com")
এটি SMTP অবজেক্ট কনফিগার করে গুগলের SMTP সার্ভার ব্যবহার করে ইমেল পাঠাতে।
এবার, আমরা প্রেরক এবং প্রাপকের ইমেল নির্দিষ্ট করব। এখানে আপনি আগে তৈরি করা জিমেইল অ্যাকাউন্ট কাজে লাগবে।
emailSender = “senderMail@sender.com”
myThroaway = "myEmail@gmail.com"
emailRecipients = [myThroaway]
এখানে একটি বিষয় লক্ষ্য করলে দেখবেন প্রাপকের লিস্ট আসলে একটি অ্যারে, যার মানে সেটি নন-এটোমিক ভ্যালু স্টোর করার জন্য ডিজাইন করা। ফলস্বরূপ, আপনি এই ফিল্ডে পুরো মেইলিং লিস্টও নির্দিষ্ট করতে পারেন!
মেসেজ লিখুন
প্রক্রিয়ার সবচেয়ে সহজ অংশ, এখানে আপনাকে সেসব মান ইনপুট দিতে হবে যা আপনি সাধারণত একটি নতুন ইমেল কম্পোজ করার সময় যোগ করেন। এতে অন্তর্ভুক্ত:
- প্রেরকের বিবরণ
- প্রাপকের বিবরণ
- সাবজেক্ট
- মেসেজ বডি
এই ফিল্ডগুলো ট্রিপল কোটেশন مار্কের ভেতরে রেখে নিচের মতো ডিমার্কেট করা হয়:
newEmail = """From: From Person <senderMail@sender.com>
To: To Person <my_email@gmail.com>
Subject: Email Test
This is the body of the email.
"""
ইমেল পাঠান
শেষে, আমরা sendmail কমান্ড ব্যবহার করে আপনার SMTP সার্ভার থেকে প্রাপকের সার্ভারে মেইল পাঠাতে পারি।
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
এখন, শুধু একটি ফাইনাল ধাপ বাকি: কোডটি পুনর্বিন্যাস করে কোনো অপ্রত্যাশিত প্রোগ্রাম ক্র্যাশ প্রতিরোধ করা।
আপনার পাইথন ইমেল প্রোগ্রাম ট্রাবলশুটিং
কখনও কখনও, আপনার SMTP সার্ভার প্রাপকের সার্ভারের সাথে সংযোগ স্থাপতে ব্যর্থ হতে পারে, বা একটি SMTP পোর্ট থেকে অন্যটিতে ইমেল পাঠাতে সমস্যা হতে পারে। такой পরিস্থিতিতে, আপনার প্রোগ্রাম অপ্রত্যাশিতভাবে ক্র্যাশ করতে পারে।
এই সম্ভাবনাগুলো হিসাবে, আপনি একটি try-except ব্লক ব্যবহার করতে পারেন এবং এরর-প্রোন স্টেটমেন্টগুলো try ব্লকের ভেতরে রাখতে পারেন। আপনার পুরো প্রোগ্রাম, try-except ব্লকসহ, এমন কিছু দেখাবে:
import smtplib
emailSender = “senderMail@sender.com”
myThroaway = ‘my_email@gmail.com’
emailRecipients = [myThroaway]
newEmail = """From: From Person <senderMail@sender.com>
To: To Person <my_email@gmail.com>
Subject: Email Test
This is the body of the email.
"""
try:
smtpObj = smtplib.SMTP(‘smtp.gmail.com’)
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
print (“Email sent successfully!”)
except SMTPException:
print ("Error: There was an error in sending your email.")
আপনার ইমেল সুরক্ষিত করুন
আপনি আসল পরিস্থিতিতে পাইথন ব্যবহার করে ইমেল পাঠাতে ইচ্ছুক হলে, যোগাযোগটি দুপাশে সুরক্ষিত নিশ্চিত করা গুরুত্বপূর্ণ।
ডিফল্ট পোর্ট সহ একটি সিম্পল SMTP সার্ভার যোগাযোগের জন্য কোনো এনক্রিপশন লেয়ার প্রদান করে না। এর মানে, যদি কোনো থার্ড-পার্টি আপনার নেটওয়ার্কে শোনে, তবে সেটি আপনার লগইন শংসাপত্র এবং আপনার ইমেলে থাকা তথ্য অ্যাক্সেস করতে পারে।
এই সমস্যা সমাধান করার একটি উপায় হচ্ছে TLS (Transport Layer Security) প্রোটোকল ব্যবহার করে আপনার যোগাযোগ এনক্রিপ্ট করা। এটি অনুরূপ প্রোটোকল যা জিমেইল এবং আউটলукের মতো বড় ইমেল ক্লায়েন্টগুলো ব্যবহার করে আপনার ইমেল কখনো ভুল হাতে না পড়ে তা নিশ্চিত করতে।
এটি করতে, আমাদের আগে তৈরি করা প্রোগ্রামে কিছু ছোট ছোট পরিবর্তন আনতে হবে।
প্রথম ধাপ, অবশ্যই, ssl লাইব্রেরি smtplib-সহ ইম্পোর্ট করা। ssl লাইব্রেরি আপনাকে একটি সিকিউর SSL কনটেক্সট তৈরি করতে এবং নির্দিষ্ট পোর্টের মাধ্যমে দুপাশে কানেক্ট করে এনক্রিপ্টেড নেটওয়ার্কে যোগাযোগ করার ক্ষমতা দেয়।
একটি সিকিউর SSL কনটেক্সট কিছু নয় বরং সিপার্স, প্রোটোকল ভার্সন, ট্রাস্টেড সার্টিফিকেট, TLS অপশন এবং TLS এক্সটেনশনের একটি সংগ্রহ।
এইপর, আমরা TLS পোর্ট নির্দিষ্ট করতে পারি এবং কিছু ssl লাইব্রেরি ফাংশন যোগ করে একটি সিকিউর ইমেলার তৈরি করতে পারি।
সকল পরিবর্তন করার পর কোডটি এমন কিছু দেখাবে:
import smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "my_email@gmail.com"
password = "my_password"
#email and password can also be user input fields
context = ssl.create_default_context()
newEmail = """From: From Person <senderMail@sender.com>
To: To Person <my_email@gmail.com>
Subject: Email Test
This is the body of the email.
"""
try:
server = smtplib.SMTP(smtpServer,port)
server.starttls(context=context)
server.login(newEmail, password)
except Exception as e:
print("the email could not be sent.")
finally:
server.quit()
আগের মতো, আপনাকে SMTP ইনস্ট্যান্স তৈরি এবং ব্যবহার করতে হবে try-except ব্লকে যাতে কোনো আকস্মিক প্রোগ্রাম ক্র্যাশ প্রতিরোধ করা যায়।
এই পাইথন স্ক্রিপ্ট দিয়ে আপনি কি করতে পারেন
এখন আপনি কোড ব্যবহার করে ইমেল অটোমেট করার অসাধারণ এবং আশ্চর্যजनকভাবে উপকারী দক্ষতা শিখেছেন, আপনি এটিকে যেকোনো প্ল্যাটফর্মে প্রয়োগ করতে পারেন যেটি একটি ভিন্ন মেইলিং লিস্টে ইমেল পাঠাতে চায়।
আপনার ব্যক্তিগত ওয়েবসাইটে অটোমেটেড একনলেজমেন্ট ইমেল পাঠাতে হোক বা আপনার পরিবার ও বন্ধুদের ক্রিসমাস কার্ড বা আমন্ত্রণ পাঠাতে হোক, এই ছোট পাইথন স্ক্রিপ্টের ব্যবহার শুধু আপনার নিজস্ব সৃজনশীলতাই সীমাবদ্ধ করে।
এছাড়া, এটি পাইথনের সাথে আপনি যা কি কি অসাধারণ জিনিস করতে পারেন তার একটা উদাহরণ মাত্র। এর সর্বজনীন ডেভেলপার সাপোর্ট এবং সহজ শেখার সিনট্যাক্সের কারণে, পাইথন দক্ষতা অর্জন করা কখনও такой সহজ ছিল না।
কোড দিয়ে আরও কুল জিনিস তৈরি করতে থাকতে, পাইথন ৩ দিয়ে আপনার নিজস্ব টেলিগ্রাম বট বানানোর গাইড চেক আউট করুন!