का उपयोग कर एसएमटीपी (एसएसएल या टीएलएस) से कनेक्ट करें मैं जीमेल एसएमटीपी मेल सर्वर से कनेक्ट करने का प्रयास कर रहा हूं और मुझे दिए गए कंकाल कोड द्वारा उल्लिखित कार्यों को निष्पादित करने का प्रयास कर रहा हूं। केवल socket
एस का उपयोग करने की अनुमति है (इसलिए smtplib
नहीं)। मुझे यह करना होगा: HELO
कमांड, MAIL FROM
, RCPT TO
, और DATA
भेजें।पायथन
इसी तरह की समस्याओं के पोस्ट के कई मामले पोस्ट किए गए हैं, लेकिन उन्हें उचित उत्तर नहीं मिला है। उदाहरण के लिए: Implementing Transport Layer Security in Python - Simple Mail Client
कार्यक्रम बंदरगाह 587
से अधिक smtp.gmail.com
से कनेक्ट करने के लिए आवश्यक है।
का उपयोग STARTTLS:
mailserver = 'smtp.gmail.com' clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect((mailserver, 587)) recv = clientSocket.recv(1024) print recv if recv[:3] != '220': print '220 reply not received from server.' #Send HELO command and print server response heloCommand = 'HELO Alice\r\n' clientSocket.send(heloCommand) recv1 = clientSocket.recv(1024) print recv1 if recv1[:3] != '250': print '250 reply not received from server.' #Send MAIL FROM command and print server response. command = "STARTTLS\r\n" clientSocket.send(command) recvdiscard = clientSocket.recv(1024) print recvdiscard clientSocket.send("MAIL From: email\r\n") recv2 = clientSocket.recv(1024) print recv2 if recv2[:3] != '250': print '250 reply not received from server.'
SSL का उपयोग:
clientSocketSSL = ssl.wrap_socket(clientSocket)
फिर
clientSocketSSL
clientSocket
के सभी उदाहरणों की जगह मैं दो अलग-अलग दृष्टिकोण लिया है। STARTTLS लाइनों को भी हटा दिया जाता है औरimport ssl
शीर्ष पर जोड़ा जाता है।
पहली विधि का उपयोग करते समय, MAIL FROM:
कमांड कुछ भी वापस नहीं कर रहा है। मैं निम्नलिखित उत्पादन हो रही है:
250 mx.google.com at your service
220 2.0.0 Ready to start TLS
250 reply not received from server.
एसएसएल, मैं जुड़ा हुआ पोस्ट के रूप में ही हो रही है का उपयोग करते समय:
ssl.SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
मैं यहाँ कुछ याद आ रही है? मुझे लगता है कि मेरा सबसे अच्छा विकल्प टीएलएस का उपयोग करना है, लेकिन मुझे नहीं पता कि इसके बारे में कैसे जाना है ... क्या मेरे MAIL FROM
कमांड में कुछ गड़बड़ है?
क्या आपने यह कोशिश की है? [अजगर के साथ ईमेल भेजने] [1] [1]: http: // stackoverflow।com/a/399240/986760 – fayyazkl
@fayyazkl जैसा कि मैंने उल्लेख किया है, मैं केवल सॉकेट का उपयोग कर सकता हूं, – user1287523
smtplib नहीं, अपने कोड में इंडेंटेशन को ठीक करके प्रारंभ करें। –