2012-01-31 2 views
10

Amazon SES를 통한 전자 메일 전송이 왜 파이썬을 통해 작동하지 않는지 진단하려고합니다.Amazon SES SMTP Python 사용법

다음 예제에서는 userpass이 적절한 자격 증명으로 설정된 문제를 보여줍니다.

>>> import smtplib 
>>> s = smtplib.SMTP_SSL("email-smtp.us-east-1.amazonaws.com", 465) 
>>> s.login(user, pw) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.6/smtplib.py", line 549, in login 
    self.ehlo_or_helo_if_needed() 
    File "/usr/lib/python2.6/smtplib.py", line 510, in ehlo_or_helo_if_needed 
    (code, resp) = self.helo() 
    File "/usr/lib/python2.6/smtplib.py", line 372, in helo 
    (code,msg)=self.getreply() 
    File "/usr/lib/python2.6/smtplib.py", line 340, in getreply 
    raise SMTPServerDisconnected("Connection unexpectedly closed") 
smtplib.SMTPServerDisconnected: Connection unexpectedly closed 

이 메시지는 특히 유용하지 않으며 다른 기능을 시도했지만 제대로 작동하지 않을 수 있습니다.

이 설정으로 썬더 버드 전자 메일 클라이언트를 사용하여 전자 메일을 보낼 수 있습니다. 따라서 내가 TLS와 관련된 임무를 수행하고 있다고 가정합니다.

답변

4

이 문제는 타이밍에 기인한다고 판단했습니다. 명령 줄에서 해당 코드를 실행 중이기 때문에 서버가 시간 초과됩니다. 파이썬 파일에 넣고 실행하면 메시지가 전송되도록 충분히 빠르게 실행됩니다.

8

전체 예 :

import smtplib 

user = '' 
pw = '' 
host = 'email-smtp.us-east-1.amazonaws.com' 
port = 465 
me = u'[email protected]' 
you = ('[email protected]',) 
body = 'Test' 
msg = ("From: %s\r\nTo: %s\r\n\r\n" 
     % (me, ", ".join(you))) 

msg = msg + body 

s = smtplib.SMTP_SSL(host, port, 'yourdomain') 
s.set_debuglevel(1) 
s.login(user, pw) 

s.sendmail(me, you, msg) 
11

나는 SMTP_SSL가 SES와 함께 더 이상 작동합니다 생각하지 않습니다. 시작 시간()을 사용해야합니다.

관련 문제