কম্পিউটার টিউটোরিয়াল

পাইথনে SMTP প্রোটোকল ক্লায়েন্ট (smtplib)

পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে 'smtplib' মডিউল রয়েছে যা একটি SMTP ক্লায়েন্ট সেশন অবজেক্ট সংজ্ঞায়িত করে যা পাইথন প্রোগ্রামের মাধ্যমে মেইল পাঠাতে ব্যবহৃত হতে পারে।

একটি মেইল সার্ভার একটি অ্যাপ্লিকেশন যা ইন্টারনেট üzerে ই-মেইল হ্যান্ডেল এবং ডেলিভার করে। আউটগোইং মেইল সার্ভার SMTP (Simple Mail Transfer Protocol) সার্ভার ইমপ্লিমেন্ট করে যা ইমেইল ট্রান্সমিশনের জন্য একটি ইন্টারনেট স্ট্যান্ডার্ড।

ইনকামিং মেইল সার্ভার দুটি প্রধান প্রকারের। POP3 (Post Office Protocol) এবং IMAP (Internet Message Access Protocol)।

smtplib.SMTP() ফাংশন

এই ফাংশন SMTP ক্লাসের একটি অবজেক্ট রিটার্ন করে। এটি একটি SMTP বা ESMTP সার্ভারের সাথে সংযোগ ক্যাপসুলেট এবং ম্যানেজ করে। এই ফাংশনের সিগনেচারে নিচের আর্গুমেন্টগুলো সংজ্ঞায়িত:

host রিমোট হোস্টের নাম যার সাথে সংযোগ হবে এমন একটি স্ট্রিং।
port সংযোগ yapılা পোর্ট নির্দিষ্টকারী একটি নম্বর। ডিফল্টভাবে smtplib.SMTP_PORT ব্যবহার করা হয়।
local_hostname HELO/EHLO কমান্ডে লোকাল হোস্টের FQDN হিসেবে ব্যবহৃত হয়।
source_address (host, port) অবজেক্টের একটি 2-টাপল যাতে সকেট বাইন্ড হবে।

এটির নিচের মেথডগুলো রয়েছে যা SMTP অপারেশন সাপোর্ট করে:

  • connect() − একটি হোস্টের সাথে একটি পোর্টে সংযোগ thiết lập করে।
  • login() − এই ফাংশন ইউজারনেম এবং পাসওয়ার্ড আর্গুমেন্ট নিয়ে SMTP সার্ভারে লগইন করে।
  • quit() − এই ফাংশন SMTP সেশন সমাপ্ত করে।
  • data() − এই ফাংশনের 'message' আর্গুমেন্ট সার্ভারে পাঠানো হয়।
  • docmd() − এই ফাংশন একটি কমান্ড পাঠায় এবং এর রেসপন্স কোড রিটার্ন করে।
  • ehlo() − এই ফাংশন সার্ভারকে আইডেন্টিফাই করে।
  • starttls() − এই ফাংশন TLS মোড শুরু করে।
  • getreply() − এই ফাংশন রেসপন্স কোডের আকারে সার্ভার থেকে রিপ্লাই গ্রহণ করে।
  • putcmd() − এই ফাংশন সার্ভারে একটি কমান্ড পাঠায়।
  • send_message() − এই ফাংশন মেসেজকে বাইট স্ট্রিংতে রূপান্তর করে এবং মেইল পাঠাতে পাস করে।
  • sendmail() − এই কমান্ড একটি সম্পূর্ণ মেইল ট্রানজেকশন সম্পাদন করে। আর্গুমেন্টগুলো:
from_addr এই মেইল পাঠানো ঠিকানা।
to_addrs এই মেইল পাঠানোর ঠিকানাগুলোর একটি তালিকা।
msg পাঠানো মেসেজ।

নিচের কোড জিমেইল-এর SMTP সার্ভার ব্যবহার করে একটি ইমেইল পাঠায়। SMTP অবজেক্ট জিমেইল-এর SMTP সার্ভার পোর্ট ৫৮৭-এ ব্যবহার করে। ehlo() কমান্ড সার্ভারকে আইডেন্টিফাই করে। আমরা আউটগোইং মেইল মেসেজের জন্য Transport Layer Security সক্রিয় করি।

পরবর্তীতে, login() কমান্ড ক্রেডেনশিয়াল আর্গুমেন্ট হিসেবে পাস করে আহ্বান করা হয়। অবশেষে মেইল মেসেজ একটি হেডার সংযুক্ত করে প্রেসক্রাইবড ফরম্যাটে অ্যাসেম্বল করা হয় এবং sendmail() মেথড ব্যবহার করে পাঠানো হয়। SMTP অবজেক্ট তারপর বন্ধ করা হয়।

import smtplib
content = "Hello World"
mail = smtplib.SMTP('smtp.gmail.com', 587)
mail.ehlo()
mail.starttls()
sender = 'pythonanytime@gmail.com'
recipient = 'mlathkar@gmail.com'
mail.login('pythonanytime@gmail.com', 'm15v5l61')
header = 'To:' + recipient + '\n' + 'From:' + sender + '\n' + 'subject:testmail\n'
content = header + content
mail.sendmail(sender, recipient, content)
mail.close()

উপরের স্ক্রিপ্ট চালানোর আগে, নিশ্চিত করুন যে সেন্ডারের জিমেইল অ্যাকাউন্টে 'less secure apps'-এ অ্যাক্সেস দেওয়া আছে।

https://myaccount.google.com/lesssecureapps

দেখানো টগল বাটনটি ON করুন।

পাইথনে SMTP প্রোটোকল ক্লায়েন্ট (smtplib)

উপরের সেটিংস সম্পাদন করার পর স্ক্রিপ্টটি এক্সিকিউট করুন। মেসেজটি রেসিপিয়েন্টের ইনবক্সে ডেলিভার হওয়া উচিত।

  1. পাইথনে লো-লেভেল নেটওয়ার্কিং ইন্টারফেস (socket)

  2. পাইথনে Gmail অ্যাকাউন্ট থেকে মেইল পাঠানো

  3. ওয়ার্ডপ্রেস কনফিগার করা SMTP মেইল পাঠাতে: ধাপে ধাপে গাইড

  4. Outlook কে ডিফল্ট মেইল ক্লায়েন্ট হিসেবে সেট করার পদ্ধতি