2012-01-31 20 views
10

Amazon SES経由で電子メールを送信するのがなぜpythonで動作しないのかを診断しようとしています。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 

このメッセージは特に有用ではありませんが、他の方法を試しましたが、動作させられないようです。

これらの設定で私のthunderbirdメールクライアントを使ってメールを送ることができるので、私は何かTLS関連のミッションです。

答えて

4

私はこの問題がタイミングによって引き起こされると判断しました。私はコマンドラインからそのコードを実行していたので、サーバーはタイムアウトします。 Pythonファイルに入れて実行すると、メッセージが確実に送信されるように十分速く実行されます。

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でもう機能しないと思います。開始時刻()を使用する必要があります

関連する問題