2012-10-29 18 views
12

मैं अपने आप से एक सरल sendmail समारोह लिख रहा हूँ और मैं इस त्रुटि प्राप्त हो रही:नई पायथन के लिए, जीमेल एसएमटीपी त्रुटि

NameError: नाम 'SMTPException' परिभाषित नहीं है

क्या मेरी कोड के साथ गलत क्या है? कोई सुझाव?

import smtplib 

sender = "[email protected]" 
receiver = ["[email protected]"] 
message = "Hello!" 

try: 
    session = smptlib.SMTP('smtp.gmail.com',587) 
    session.ehlo() 
    session.starttls() 
    session.ehlo() 
    session.login(sender,'password') 
    session.sendmail(sender,receiver,message) 
    session.quit() 
except SMTPException: 
    print('Error') 

उत्तर

20

अजगर में, आप पूरी तरह से अपने मॉड्यूल के साथ यह लगाकर द्वारा नाम अर्हता प्राप्त करने की आवश्यकता होगी:

except smtplib.SMTPException: 

यह सच है जब तक आप विशेष रूप से अयोग्य नाम आयात (लेकिन मैं करने का सुझाव नहीं होगा यह आपके कार्यक्रम के लिए, बस यह दिखा रहा है कि क्या संभव है):

from smtplib import SMTPException 
+0

आह मुझे एक वर्तनी त्रुटि थी। – eatonphil

+5

चिंता न करें, एसएमटीपी के साथ काम करने के 20 साल बाद भी, मैं अभी भी ऐसा करता हूं। –

1

यह गलत वर्तनी मेरे लिए कई बार हुई! इस "समस्या" को रोकने के लिए एक तरीका है, yagmail का उपयोग करना है।

चुटकुले चुटकुले, मैंने हाल ही में ईमेल भेजने के लिए आसान बनाने के लिए yagmail बनाया है।

उदाहरण के लिए:

import yagmail 
yag = yagmail.SMTP('[email protected]', 'password') 
yag.send(contents = "Hello!") 

यह कई shortenings यहाँ का उपयोग करता है, उदाहरण के लिए जब To परिभाषित नहीं है, यह एक ही ईमेल, जो सर्वर पर पंजीकृत करने के लिए एक मेल भेज देंगे। इसके अलावा बंदरगाह और मेजबान डिफ़ॉल्ट हैं, जो इसे बहुत संक्षिप्त बनाता है।

वास्तव में, के बाद से ऐसा लगता है तो आप तुरंत कनेक्शन बंद करना चाहते हैं, तो आप भी इस एक लाइनर का उपयोग कर सकते हैं:

yagmail.SMTP('[email protected]', 'password').send(contents = "Hello!") 

सुरक्षा के लिए, यदि आप अपना पासवर्ड keyring में (दस्तावेज़ देखें) इस तरह रख सकते हैं कि आपको अपनी व्यक्तिगत पासवर्ड को अपनी स्क्रिप्ट में रखना नहीं है, बहुत महत्वपूर्ण है! यह आपको और अधिक मूल्यवान स्क्रीन-एस्टेट भी बचाएगा।

ऑल-इन पैकेज के साथ जा रहे हैं (@gmail.com डिफ़ॉल्ट है), तो आपको निम्न के साथ भाग प्राप्त कर सकते हैं:

yagmail.SMTP('user').send('', 'Hello!') 

गुड लक।

+1

कोई टिप्पणी छोड़ दिए बिना डाउनवोट? – PascalVKooten

+2

मैंने yagmail का उपयोग किया और आपको एक उथल-पुथल दिया! – sureshvv

+0

@ सुरेशव धन्यवाद :) उम्मीद है कि यह आपको अच्छी तरह से सेवा प्रदान करता है। – PascalVKooten

संबंधित मुद्दे