2012-03-19 16 views
7

मैं smtp.gmail.com पर सीधे कनेक्ट करके सीधे एक स्क्रिप्ट से जीमेल ईमेल खाते में एक ईमेल भेजना चाहता हूं।प्रमाणीकरण के बिना सीधे SMTP सर्वर पर मेल कैसे भेजें?

हालांकि, मैं स्क्रिप्ट में जीमेल पासवर्ड नहीं रखना पसंद करूंगा। जो मैंने पढ़ा है, उससे ऐसा लगता है कि जीमेल को अपने स्वयं के उपयोगकर्ताओं सहित किसी भी मेल को वितरित करने से पहले प्रमाणीकरण की आवश्यकता है।

मेरा सवाल यह है कि मेल किसी अन्य एसएमटीपी सर्वर से कभी कैसे पहुंचाया जा रहा है, क्योंकि एसएमटीपी सर्वर में जीमेल प्रमाण-पत्र नहीं होंगे। क्या जीमेल को केवल "अज्ञात" प्रेषकों के लिए प्रमाणीकरण की आवश्यकता है, और चूंकि मेरी स्क्रिप्ट किसी व्यक्तिगत कंप्यूटर पर चल रही है, तो यह उच्च सुरक्षा के अधीन है? यहाँ है अजगर स्क्रिप्ट मैं चला रहा हूँ:

import smtplib 
import email 
msg = email.message.Message() 
msg["From"] = "[email protected]" 
msg["To"] = "[email protected]" 
msg["Subject"] = "Test message" 
server = smtplib.SMTP("smtp.gmail.com",587) 
server.starttls() 
server.ehlo_or_helo_if_needed() 
try: 
    failed = server.sendmail("[email protected]","[email protected]", msg.as_string()) 
    server.close() 
except Exception as e: 
    print(e) 

जब मैं इस स्क्रिप्ट को चलाने, उत्पादन होता है:

(530, b'5.5.1 Authentication Required. Learn more at 
5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 fw5sm21125889wib.0', '[email protected]') 

मेरा प्रश्न है, कैसे बाहरी SMTP सर्वर इस समस्या से बचने हो? और जो कुछ भी वे स्थानीय स्क्रिप्ट में प्रतिकृति करते हैं, या क्या इसे सही रिवर्स DNS रिकॉर्ड्स, एसपीएफ़ रिकॉर्ड इत्यादि की आवश्यकता होती है?

उत्तर

5

आप प्रमाणीकरण के बिना कुछ बाहरी SMTP सर्वर (या एक स्थानीय SMTP) का उपयोग कर सकते हैं, लेकिन भेजे गए संदेश Google के स्पैम फ़िल्टर द्वारा पकड़ लिया जाएगा, क्योंकि msg [ "से"]@ google.com है, जबकि वास्तविक एसएमटीपी smtp.gmail.com नहीं है।

उन एसएमटीपी सर्वरों में भी आईएसपी के DNS में सही रिवर्स जोन होना चाहिए और अन्यथा यह smtp Google द्वारा अवरुद्ध कर दिया जाएगा।

0

आप प्रमाणीकरण के बिना जीमेल smtp-server का उपयोग नहीं कर सकते हैं। यह एक Google नीति है। आपको अपना खाता पासवर्ड दर्ज करना होगा। लेकिन एक और तरीका है। आप जीमेल एपीआई के साथ जीएई (Google ऐप इंजन) का उपयोग कर सकते हैं। इस तरह आप सीधे संदेश भेज सकते हैं।

17

एक असली अच्छा सवाल है, और मैं इनलाइन का जवाब दे रहा हूं।

मैं सीधे smtp.gmail.com से कनेक्ट करके, एक स्क्रिप्ट से जीमेल ईमेल खाते में एक ईमेल भेजना चाहता हूं।

सभी smpt.gmail.com सबसे पहले एक mailserver जो मेल (अन्य mailservers से) स्वीकार नहीं है, बल्कि जीमेल उपयोगकर्ताओं के लिए प्रवेश और इसलिए भेज सकते हैं या ईमेल की जांच करने की अनुमति है। अगर हम जीमेल मेलसेवर को जानना चाहते हैं जो अन्य मेलसेवर से मेल स्वीकार करता है।हम टर्मिनल पर निम्न cmd चला सकते हैं:

dig mx gmail.com +short

उत्पादन:

10 alt1.gmail-smtp-in.l.google.com. 
40 alt4.gmail-smtp-in.l.google.com. 
5 gmail-smtp-in.l.google.com. 
30 alt3.gmail-smtp-in.l.google.com. 
20 alt2.gmail-smtp-in.l.google.com. 

gmail-smtp-in.l.google.com. के बाद से के निम्नतम मूल्य हम इसे पसंद किया के रूप में उपयोग किया गया है मेलसेवर

हालांकि, मैं स्क्रिप्ट में जीमेल पासवर्ड नहीं रखना पसंद करूंगा। जो मैंने पढ़ा है, उससे ऐसा लगता है कि जीमेल को अपने स्वयं के उपयोगकर्ताओं सहित किसी भी मेल को वितरित करने से पहले प्रमाणीकरण की आवश्यकता है।

ठीक एक smtp.gmail.com का उपयोग करता है के लिए लॉग इन और भेजने के लिए/करने के लिए/ई-मेल चेक उनके संबंधित खातों से, इसलिए हम उपयोगकर्ता क्रेडेंशियल की आवश्यकता। लेकिन हम यानी अपने मेल सर्वर से ईमेल भेजने पर साख की जरूरत नहीं है gmail-smtp-in.l.google.com (नीचे उदाहरण)

मेरा प्रश्न, कैसे मेल एक और एसएमटीपी सर्वर से आ रही है है कभी वितरित किया गया है, क्योंकि उस SMTP सर्वर में जीमेल प्रमाण-पत्र नहीं होंगे। क्या जीमेल को केवल "अज्ञात" प्रेषकों के लिए प्रमाणीकरण की आवश्यकता है, और चूंकि मेरी स्क्रिप्ट किसी व्यक्तिगत कंप्यूटर पर चल रही है, तो यह उच्च सुरक्षा के अधीन है? यहाँ अजगर स्क्रिप्ट मैं चला रहा हूँ है:

मैं अपने आप को चर्चा से स्पष्ट ऊपर हम जीमेल मेल सर्वर से कनेक्ट करने के जीमेल साख की जरूरत नहीं है बना दिया है के रूप में, लेकिन यदि हम जीमेल मेल सर्वर से कनेक्ट व्यक्तिगत कंप्यूटरों का उपयोग करके हम कुछ ईमेल भेजने से दूर हो सकते हैं, लेकिन अधिक ईमेल भेजने के लिए हमें डीकेआईएम, एसपीएफ़ आदि का उपयोग करके डोमेन प्रतिष्ठा और उत्तरदायित्व बनाने की आवश्यकता है (एक पूरी तरह से अलग स्पेक्ट्रम है)।

निम्नलिखित पायथन स्क्रिप्ट प्रमाणीकरण के बिना एक जीमेल खाते में ईमेल भेजता है।

import smtplib 

fromaddr = '[email protected]' 
toaddrs = ['[email protected]'] 
msg = ''' 
    From: {fromaddr} 
    To: {toaddr} 
    Subject: testin'  
    This is a test 
    . 
''' 

msg = msg.format(fromaddr =fromaddr, toaddr = toaddrs[0]) 
# The actual mail send 
server = smtplib.SMTP('gmail-smtp-in.l.google.com:25') 
server.starttls() 
server.ehlo("example.com") 
server.mail(fromaddr) 
server.rcpt(toaddrs[0]) 
server.data(msg) 
server.quit() 

या निम्न टेलनेट कोशिश झलकी

telnet gmail-smtp-in.l.google.com 25 

HELO sendingdomain.com 

MAIL FROM:<[email protected]> 

RCPT TO:<[email protected]> 

DATA 
From: <[email protected]> 
To: <[email protected]> 
Subject: Just a test email 

The body of the mail goes here.   
. 

QUIT 
+0

यहाँ "25" का प्रतिनिधित्व करते क्या? @MaK –

+0

25 एसएमटीपी पोर्ट है, जो मेल सर्वर के साथ संचार के लिए उपयोग किया जाता है। https://en.m.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol – MaK

+0

हाँ @ मैक लेकिन क्या यह स्थिर है? या गतिशील? क्या उनका कोई बंदरगाह उपलब्ध है? –

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