इस लेख में, हम देखेंगे कि हम पायथन का उपयोग करके अनुलग्नकों के साथ ईमेल कैसे भेज सकते हैं। मेल भेजने के लिए हमें किसी बाहरी पुस्तकालय की आवश्यकता नहीं होती है। SMTPlib नामक एक मॉड्यूल है, जो पायथन के साथ आता है। यह मेल भेजने के लिए SMTP (सिंपल मेल ट्रांसफर प्रोटोकॉल) का उपयोग करता है। यह मेल करने के लिए SMTP क्लाइंट सेशन ऑब्जेक्ट बनाता है।
एसएमटीपी को वैध स्रोत और गंतव्य ईमेल आईडी, और पोर्ट नंबर की आवश्यकता है। विभिन्न साइटों के लिए पोर्ट संख्या भिन्न होती है। उदाहरण के तौर पर, Google के लिए पोर्ट 587 है ।
सबसे पहले हमें मेल भेजने के लिए मॉड्यूल आयात करना होगा।
import smtplib
यहां हम इसे और अधिक लचीला बनाने के लिए MIME (बहुउद्देशीय इंटरनेट मेल एक्सटेंशन) मॉड्यूल का भी उपयोग कर रहे हैं। MIME हेडर का उपयोग करके, हम प्रेषक और रिसीवर की जानकारी और कुछ अन्य विवरण संग्रहीत कर सकते हैं। मेल के साथ अटैचमेंट सेट करने के लिए MIME की भी आवश्यकता होती है।
हम मेल भेजने के लिए Google की Gmail सेवा का उपयोग कर रहे हैं। इसलिए हमें Google के सुरक्षा उद्देश्यों के लिए कुछ सेटिंग्स (यदि आवश्यक हो) की आवश्यकता है। अगर उन सेटिंग्स को सेट नहीं किया जाता है, तो निम्न कोड काम नहीं कर सकता है, अगर Google तृतीय-पक्ष ऐप से एक्सेस का समर्थन नहीं करता है।
एक्सेस की अनुमति देने के लिए, हमें Google खाते में 'कम सुरक्षित ऐप एक्सेस' सेटिंग सेट करने की आवश्यकता है। यदि दो चरणों में सत्यापन चालू है, तो हम कम सुरक्षित पहुंच का उपयोग नहीं कर सकते।
इस सेटअप को पूरा करने के लिए, Google के Admin Console पर जाएं, और कम सुरक्षित ऐप सेटअप खोजें।
<केंद्र>
SMTP (smtplib) का उपयोग करके अनुलग्नकों के साथ मेल भेजने के चरण
- MIME बनाएं
- MIME में प्रेषक, प्राप्तकर्ता का पता जोड़ें
- मेल शीर्षक को MIME में जोड़ें
- शरीर को MIME में संलग्न करें
- फ़ाइल को बाइनरी मोड के रूप में खोलें, जो मेल के साथ संलग्न होने वाली है
- बाइट स्ट्रीम पढ़ें और बेस64 एन्कोडिंग योजना का उपयोग करके अनुलग्नक को एन्कोड करें।
- अटैचमेंट के लिए हेडर जोड़ें
- उचित सुरक्षा सुविधाओं के साथ मान्य पोर्ट नंबर के साथ 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
'''
#The mail addresses and password
sender_address = 'sender123@gmail.com'
sender_pass = 'xxxxxxxx'
receiver_address = 'receiver567@gmail.com'
#Setup the MIME
message = MIMEMultipart()
message['From'] = sender_address
message['To'] = receiver_address
message['Subject'] = 'A test mail sent by Python. It has an attachment.'
#The subject line
#The body and the attachments for the mail
message.attach(MIMEText(mail_content, 'plain'))
attach_file_name = 'TP_python_prev.pdf'
attach_file = open(attach_file_name, 'rb') # Open the file as binary mode
payload = MIMEBase('application', 'octate-stream')
payload.set_payload((attach_file).read())
encoders.encode_base64(payload) #encode the attachment
#add payload header with filename
payload.add_header('Content-Decomposition', 'attachment', filename=attach_file_name)
message.attach(payload)
#Create SMTP session for sending the mail
session = smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port
session.starttls() #enable security
session.login(sender_address, sender_pass) #login with mail_id and 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
<केंद्र>