Ответ 1
Я не думаю, что SMTP_SSL больше работает с SES. Нужно использовать starttls()
smtp = smtplib.SMTP("email-smtp.us-east-1.amazonaws.com")
smtp.starttls()
smtp.login(SESSMTPUSERNAME, SESSMTPPASSWORD)
smtp.sendmail(me, you, msg)
Я пытаюсь диагностировать, почему отправка электронной почты через Amazon SES не работает через python.
Следующий пример демонстрирует проблему, где user
и pass
установлены соответствующие учетные данные.
>>> 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.
Я не думаю, что SMTP_SSL больше работает с SES. Нужно использовать starttls()
smtp = smtplib.SMTP("email-smtp.us-east-1.amazonaws.com")
smtp.starttls()
smtp.login(SESSMTPUSERNAME, SESSMTPPASSWORD)
smtp.sendmail(me, you, msg)
Полный пример:
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)
Я решил, что эта проблема вызвана сроками. Поскольку я выполнял этот код из командной строки, сервер будет тайм-аут. Если я помещаю его в файл python и запускаю его, он выполняется достаточно быстро, чтобы обеспечить отправку сообщения.