व्यावसायिक ईमेल क्लाइंट उपयोगकर्ता-अनुकूल GUI की सुविधा प्रदान करते हैं, लेकिन वे अक्सर उस लचीलेपन और अनुकूलनशीलता की कमी होती है जो कई डेवलपर्स या सामग्री निर्माता अपनी ईमेल जरूरतों के लिए चाहते हैं।
चाहे वह आपके सोशल मीडिया चैनल पर नए सब्सक्राइबर को धन्यवाद ईमेल भेजने के लिए हो या अपने नवीनतम प्रोजेक्ट में ईमेल कार्यक्षमता जोड़ने के लिए, Python में SMTP का उपयोग करके स्वचालित संदेश भेजने की क्षमता निश्चित रूप से काम आएगी।
यह जानने के लिए पढ़ें कि आप आज अपने मशीन पर ईमेल भेजने के लिए Python स्क्रिप्ट कैसे चला सकते हैं।
SMTP क्या है?
सरल शब्दों में, SMTP, या सिंपल मेल ट्रांसफर प्रोटोकॉल, इंटरनेट पर ईमेल प्रसारित करने के लिए मेल सर्वरों के लिए एक संचार प्रोटोकॉल है।
यह TCP/IP सूट के एप्लिकेशन लेयर का एक अभिन्न अंग है, जिसका उपयोग इंटरनेट या अन्य समान नेटवर्क पर संचार के लिए किया जाता है। जहां SMTP लागू होता है, वहां स्टोर और फॉरवर्ड के रूप में जानी जाने वाली प्रक्रिया नेटवर्क पर मेल ले जाने में मदद करती है।
प्रत्येक एंडपॉइंट पर, मेल ट्रांसफर एजेंट (MTA) के रूप में जाना जाने वाला सॉफ्टवेयर भाग लेने वाले SMTP सर्वरों के बीच संचार की सुविधा के लिए स्टोर और फॉरवर्ड का उपयोग करता है। इसलिए SMTP की मुख्य भूमिका केवल यह निर्धारित करना है कि नेटवर्क में एक बिंदु से दूसरे बिंदु पर मेल कहां और कैसे जाता है।
शुरुआत करना
इस प्रोग्राम का उपयोग करके ईमेल भेजने के लिए आपके पास एक ईमेल खाता होना चाहिए। ऐसा इसलिए है क्योंकि हम ईमेल भेजने के लिए ईमेल क्लाइंट की SMTP सेवा का उपयोग करेंगे। इस ट्यूटोरियल के लिए, हम Gmail का उपयोग करेंगे।
आप टेस्ट ईमेल भेजने के लिए एक स्थानीय SMTP डिबगिंग सर्वर का भी उपयोग कर सकते हैं, लेकिन अभी हम ईमेल खाते का उपयोग करके ईमेल भेजेंगे क्योंकि यह अधिक सहज है।
मौजूदा Gmail खाते का उपयोग करना संभव है, लेकिन जैसे-जैसे आप अपने प्रोग्राम के साथ प्रयोग करेंगे, यह जल्द ही टेस्ट ईमेल से भर जाएगा। इसलिए हम टेस्टिंग के उद्देश्य के लिए एक 'थ्रोअवे' खाता बनाने की सलाह देते हैं।
अब, अपने Gmail खाते पर कम सुरक्षित ऐप्स को एक्सेस करने की अनुमति देने का विकल्प चालू करें। यह थ्रोअवे ईमेल का उपयोग करने का एक और कारण है क्योंकि अपने प्राथमिक ईमेल की गोपनीयता सेटिंग्स के साथ खेलना अनुशंसित नहीं है।
Python में ईमेल लिखना
Python 3, smtplib (SMTP लाइब्रेरी के लिए संक्षिप्त) नामक एक मॉड्यूल के साथ प्री-इंस्टॉल आता है, जिसका उपयोग SMTP सर्वरों के साथ काम करने के लिए किया जा सकता है।
किसी अन्य Python मॉड्यूल की तरह, आपको सबसे पहले smtplib को आयात करना होगा।
import smtplib
SMTP ऑब्जेक्ट आरंभ करना
अब, आप एक SMTP ऑब्जेक्ट बनाने के लिए smtplib का उपयोग कर सकते हैं, जो आपको एक पारंपरिक ईमेल क्लाइंट की अधिकांश कार्यक्षमता प्रदान करेगा। हालांकि, एक SMTP ऑब्जेक्ट के फ़ंक्शन केवल इंस्टेंस मेथड के माध्यम से उपयोग किए जा सकते हैं। इसलिए, स्वाभाविक रूप से, अगला कदम एक ऑब्जेक्ट इंस्टेंस घोषित करना है।
mySMTP = smtplib.SMTP("smtp.google.com")
यह SMTP ऑब्जेक्ट को Google के SMTP सर्वर का उपयोग करके ईमेल भेजने के लिए कॉन्फ़िगर करता है।
इसके बाद, हम प्रेषक और प्राप्तकर्ता ईमेल निर्दिष्ट करते हैं। यहां वह Gmail खाता काम आता है जिसे आपने पहले बनाया था।
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.
"""
ईमेल भेजना
अंत में, हम अपने SMTP सर्वर से प्राप्तकर्ता के सर्वर पर मेल भेजने के लिए sendmail कमांड का उपयोग कर सकते हैं।
mySMTP.sendmail(emailSender, emailRecipients, newEmail)
अब, केवल एक अंतिम चरण बचा है: किसी भी संभावित प्रोग्राम क्रैश को रोकने के लिए कोड को पुनर्गठित करना।
अपने Python ईमेल प्रोग्राम का समस्या निवारण
कभी-कभी, आपका 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.")
अपने ईमेल को सुरक्षित करना
यदि आप वास्तविक दुनिया की सेटिंग में ईमेल भेजने के लिए Python का उपयोग करना चाहते हैं, तो यह सुनिश्चित करना महत्वपूर्ण है कि संचार दोनों सिरों पर सुरक्षित है।
डिफ़ॉल्ट पोर्ट के साथ एक साधारण SMTP सर्वर का उपयोग संचार के लिए किसी भी एन्क्रिप्शन लेयर प्रदान नहीं करता है। इसका मतलब है कि यदि कोई तृतीय-पक्ष आपके नेटवर्क पर सुन रहा है, तो वह आपके लॉगिन क्रेडेंशियल्स और आपके ईमेल में निहित जानकारी तक पहुंच सकता है।
इस समस्या को हल करने का एक तरीका TLS (ट्रांसपोर्ट लेयर सिक्योरिटी) प्रोटोकॉल का उपयोग करके अपने संचार को एन्क्रिप्ट करना है। यह वही प्रोटोकॉल है जिसका उपयोग Gmail और Outlook जैसे प्रमुख ईमेल क्लाइंट द्वारा यह सुनिश्चित करने के लिए किया जाता है कि आपके ईमेल गलत हाथों में न पड़ें।
ऐसा करने के लिए, हमें पहले बनाए गए प्रोग्राम में कुछ मामूली बदलाव करने होंगे।
पहला कदम, निश्चित रूप से, 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 ब्लॉक में बनाना और उपयोग करना चाहिए।
इस Python स्क्रिप्ट से आप क्या कर सकते हैं
अब जब आप कोड का उपयोग करके ईमेल को स्वचालित करने का भयानक और आश्चर्यजनक रूप से उपयोगी कौशल सीख चुके हैं, तो आप इसे किसी भी प्लेटफॉर्म पर लागू कर सकते हैं जिसके लिए विविध मेलिंग सूची में ईमेल भेजने की आवश्यकता होती है।
अपनी व्यक्तिगत वेबसाइट पर स्वचालित पावती ईमेल भेजने के लिए इसका उपयोग करने से लेकर अपने परिवार और दोस्तों को क्रिसमस कार्ड या निमंत्रण ईमेल करने के लिए, इस छोटी Python स्क्रिप्ट के उपयोग केवल आपकी अपनी रचनात्मकता द्वारा सीमित हैं।
यह उन कई भयानक चीजों में से एक है जो आप Python के साथ कर सकते हैं। इसके सर्वव्यापी डेवलपर समर्थन और सीखने में आसान सिंटैक्स के साथ, Python कौशल सीखना कभी आसान नहीं रहा।
कोड के साथ शानदार चीजें बनाना जारी रखने के लिए, Python 3 के साथ अपना खुद का टेलीग्राम बॉट बनाने के बारे में हमारी मार्गदर्शिका देखें!