Gmail SMTP 메일 서버에 연결하고 나에게 주어진 스켈레톤 코드에 설명 된대로 작업을 시도하고 있습니다. socket
의 사용 만 허용됩니다 (따라서 smtplib
아님). 나는 : HELO
명령, MAIL FROM
, RCPT TO
및 DATA
을 보내야한다.Python을 사용하여 SMTP (SSL 또는 TLS)에 연결
유사한 문제가 게시 된 경우가 많이 있지만 적절한 답변을받지 못했습니다. 예 : Implementing Transport Layer Security in Python - Simple Mail Client
587
을 통해 smtp.gmail.com
에 연결하려면 프로그램이 필요합니다.
사용 STARTTLS : SSL을 사용하여
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.'
:
그런 다음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, 내가 링크 된 포스트와 같은납니다 사용 :
ssl.SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
내가 여기서 뭔가를 놓치고 있습니까? 내 최선의 선택 TLS를 사용하는 것 같아요하지만 난 그것에 대해 갈 생각이 ... 내 무언가가 내 MAIL FROM
잘못인가? 특히, STARTTLS
명령에 220
응답을받은 후 - SSL을 사용하는 경우
시도해 보셨습니까? [파이썬으로 이메일을 보내] [1] [1] : HTTP : // 유래.com/a/399240/986760 – fayyazkl
@fayyazkl 언급 한대로 소켓 만 사용할 수 있으며 smtplib은 사용할 수 없습니다. – user1287523
코드에서 들여 쓰기를 수정하여 시작하십시오. –