2012-12-25 2 views
2

이 코드를이 연결smtplib 버그? STARTTLS/

import smtplib 
s = smtplib.SMTP() 
s.set_debuglevel(1) 

print "-------------------------------------------------------------------------" 
s.connect("smtp.gmail.com",587) 
s.starttls() 
s.login("USERNAME","PASSWORD") 
s.quit() 

print "=========================================================================" 

s.connect("smtp.gmail.com",587) 
s.starttls() 
s.login("USERNAME","PASSWORD") 
s.quit() 
print "-------------------------------------------------------------------------" 

처음을 가지고 두 번째 시간을 호출 할 때 실패 종료가 여기와 같이 잘 .... 두 번째 시간은 TLS에 대한 예외를 생산 시작 ...

Traceback (most recent call last): 
    File "mtest.py", line 12, in <module> 
    s.starttls() 
    File "/usr/lib/python2.7/smtplib.py", line 635, in starttls 
    raise SMTPException("STARTTLS extension not supported by server.") 
smtplib.SMTPException: STARTTLS extension not supported by server. 

바보 같거나 버그가 있습니까?

p.s. 내 '스레드'스크립트에서 같은 문제가 발생하여이 테스트를 작성 했으므로 스레드와 아무 관련이 없는지 확인하고자했습니다.

+1

s.starttls() 전에 s.ehlo()를 추가하면 서버가 tls를 지원한다고 알려주며 시작 할 수 있습니다. –

+0

을 추가하면 s.ehlo()가 처리됩니다. DUUHH :-) – Skateboss3

답변

3

s.quit() 이후에 연결 s이 (가) 죽었으므로 다른 용도로 사용할 수 없습니다. 그렇다면 두 번째 메일 전송에 또 다른 s = smtplib.SMTP()이 필요합니다.

은 SMTP 세션을 종료하고 연결을 닫습니다

quit() documentation

이 그렇게이다 제안 할 것으로 보인다.

+0

답변 해 주셔서 감사합니다. – Skateboss3