इस लेख में, हम देखेंगे कि Python का उपयोग करके अटैचमेंट्स के साथ ईमेल कैसे भेजें। मेल भेजने के लिए, हमें किसी एक्सटर्नल लाइब्रेरी की आवश्यकता नहीं है। SMTPlib नामक एक मॉड्यूल है, जो Python के साथ आता है। यह मेल भेजने के लिए SMTP (सिंपल मेल ट्रांसफर प्रोटोकॉल) का उपयोग करता है। यह मेलिंग के लिए SMTP क्लाइंट सेशन ऑब्जेक्ट्स बनाता है।
SMTP को वैलिड सोर्स और डेस्टिनेशन ईमेल आईडी, और पोर्ट नंबर्स की आवश्यकता होती है। पोर्ट नंबर अलग-अलग साइट्स के लिए भिन्न होता है। उदाहरण के लिए, गूगल के लिए पोर्ट 587 है।
सबसे पहले हमें मेल भेजने के लिए मॉड्यूल इम्पोर्ट करना होगा।
import smtplib
यहां हम MIME (मल्टीपर्पस इंटरनेट मेल एक्सटेंशन) मॉड्यूल का भी उपयोग कर रहे हैं ताकि इसे अधिक लचीला बनाया जा सके। 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)
session.starttls() # सिक्योरिटी इनेबल करें
session.login(sender_address, sender_pass) # मेल आईडी और पासवर्ड से लॉगिन
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
